我的脚本读取一个包含替换字符串的文件,然后使用该替换对某些文本中的空格进行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).'"');
…然后替换将按预期工作。