将从文件读取的字符串更改为特殊字符(例如" ")


Change string read from file into special chars (e.g. " ")

我的脚本读取一个包含替换字符串的文件,然后使用该替换对某些文本中的空格进行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";
}

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

您可能确实有类似的问题与其他转义序列,如't, 'r, 'x10,…等。

我建议采用这种解决方案,将字符串转换为能够解释这些字符的版本。

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

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