【发布时间】:2011-10-29 05:38:17
【问题描述】:
我有一个文本文件,其中包含文字字符串\r\n。我想用实际的换行符 (\n) 替换它。
我知道正则表达式 /\\r\\n/ 应该匹配它(我已经在 Reggy 中对其进行了测试),但我无法让它在 PHP 中工作。
我尝试了以下变体:
preg_replace("/\\\\r\\\\n/", "\n", $line);
preg_replace("/\\\\[r]\\\\[n]/", "\n", $line);
preg_replace("/[\\\\][r][\\\\][n]/", "\n", $line);
preg_replace("/[\\\\]r[\\\\]n/", "\n", $line);
如果我只是尝试替换反斜杠,它可以正常工作。只要我添加一个 r,它就找不到匹配项。
我正在读取的文件被编码为 UTF-16。
编辑:
我也已经尝试过使用str_replace()。
我现在认为这里的问题是文件的字符编码。我尝试了以下方法,它确实有效:
$testString = "\\r\\n";
echo preg_replace("/\\\\r\\\\n/", "\n", $testString);
但它不适用于我从文件中读取的行。
【问题讨论】:
标签: php regex preg-replace backslash