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

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

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

1
2

我哪里错了?

4

2 回答 2

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

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

于 2013-06-28T14:47:39.343 回答
2

PHP_EOL取决于操作系统。所以\r\n在 Windows 和\nLinux 上。

如果您有一个文件,\r\n并且您在 Linux 系统上使用删除换行符,PHP_EOL您将获得类似的结果:\r仍然会在文件中。

更改正则表达式以简单地包含所有形式:"#\r|\n|\t#"

于 2013-06-28T14:47:33.487 回答