$str = "1
2";
$str = preg_replace( "#".PHP_EOL."|\t#", "", $str );
$hand = fopen("t.txt", "w+");
fwrite($hand, $str);
fclose($hand);
我需要从字符串中删除换行符和水平制表符,然后写入txt
文件。
上面的代码只删除了水平标签,但保留了换行符,即在文本文件中写入:
1
2
我哪里错了?
答案 0 :(得分:8)
$str = preg_replace('/([\r\n\t])/','', $str);
无需使用PHP_EOL
,因为它只是转换为\n
。只是一些操作系统(如Windows)使用\r\n
(这就是常量存在的原因),但这不会改变\r
或\n
的含义。
答案 1 :(得分:2)
PHP_EOL
是OS dependent。所以Windows上为\r\n
,Linux上为\n
。
如果您的文件具有\r\n
,并且使用PHP_EOL
删除了Linux系统上的换行符,则会得到类似的结果:\r
仍会出现在文件中
将正则表达式更改为仅包含所有表单:"#\r|\n|\t#"