我的脚本读取包含替换字符串的文件,然后使用替换文件在某些文本中创建一个preg_replace空格。这个想法是替换文件应该包含任何有效的正则表达式替换。
当替换文件包含一个简单的字符串时,例如“xyz”,它运作正常。但是当它包含“\ n”时,我想将它视为一个新行,但它不起作用。文本中的空格按字面替换为“\ n”。这是脚本:
$c = file_get_contents('replacements.txt');
$s = preg_replace('/ /', $c, 'some text');
file_put_contents('output.txt', $s);
在文本编辑器中查看时,output.txt包含“some \ ntext”。
所以我添加了一个简单的if语句:
if ($c == '\n') {
$c = "\n";
}
现在它有效。但有没有更通用的方法来处理这个问题,即从文件中获取替换字符串被解释为真正的正则表达式替换?因为将来它可能是一个更复杂的替代品。
答案 0 :(得分:0)
您可能确实遇到与其他转义序列类似的问题,例如\t
,\r
,\x10
,等等。
我建议使用此解决方案,将字符串转换为具有这些字符解释的版本。
$c = json_decode('"'.str_replace('"', '\"', $c).'"');
...然后替换将按预期工作。