使用常量PHP_EOL从文本中删除换行符

时间:2013-06-28 14:44:28

标签: php

$str = "1
2";
$str = preg_replace( "#".PHP_EOL."|\t#", "", $str );
$hand = fopen("t.txt", "w+");
fwrite($hand, $str);
fclose($hand);

我需要从字符串中删除换行符和水平制表符,然后写入txt文件。

上面的代码只删除了水平标签,但保留了换行符,即在文本文件中写入:

1
2

我哪里错了?

2 个答案:

答案 0 :(得分:8)

$str = preg_replace('/([\r\n\t])/','', $str);

无需使用PHP_EOL,因为它只是转换为\n。只是一些操作系统(如Windows)使用\r\n(这就是常量存在的原因),但这不会改变\r\n的含义。

答案 1 :(得分:2)

PHP_EOLOS dependent。所以Windows上为\r\n,Linux上为\n

如果您的文件具有\r\n,并且使用PHP_EOL删除了Linux系统上的换行符,则会得到类似的结果:\r仍会出现在文件中

将正则表达式更改为仅包含所有表单:"#\r|\n|\t#"