将从文件读取的字符串更改为特殊字符(例如“\ n”)

时间:2016-11-03 21:30:03

标签: php

我的脚本读取包含替换字符串的文件,然后使用替换文件在某些​​文本中创建一个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";
}

现在它有效。但有没有更通用的方法来处理这个问题,即从文件中获取替换字符串被解释为真正的正则表达式替换?因为将来它可能是一个更复杂的替代品。

1 个答案:

答案 0 :(得分:0)

您可能确实遇到与其他转义序列类似的问题,例如\t\r\x10,等等。

我建议使用此解决方案,将字符串转换为具有这些字符解释的版本。

$c = json_decode('"'.str_replace('"', '\"', $c).'"');

...然后替换将按预期工作。