如何使用 PHP 中的 preg_replace 将表达式替换为元字符?

How do i replace an expression with metacharacters using preg_replace in PHP?

我尝试过不同的方法,将 PHP 中的一段带有元字符的文本替换为另一段带有元字符的文本。我知道,这看起来很简单,但我试了很多次都没有得到。

模式:$Sel = 'anyvalues';

替换:$Sel = 'one other';

主题:<?php $Sel = 'anyvalues';

我深入尝试以不同的顺序使用 addslashes() 和 preg_quote() 方法,但它不起作用。我需要它如表所示,而不是寻找任何解决方法。

这些值中的每一个都位于不同的文件中,即 模式 位于一个文件中,replacement 在另一个中,subject 在另一个中也是如此。

你把你的图案包裹在 delimiters 了吗?

$pattern = '$Sel = "anyvalues_containing_delimiter_/";';
$replacement = '$Sel = "one other";';
$subject = '<?php $Sel = "anyvalues_containing_delimiter_/";';

echo preg_replace(sprintf('/%s/', preg_quote($pattern, '/')), $replacement, $subject);

模式的内容是唯一需要转义的内容,因此 preg_quote 调用。第二个参数是包装模式的定界符(sprintf 在这里做的),所以模式内容中的任何出现也可以在应用之前转义。

编辑:我修改了代码片段以涵盖文件内容中出现的分隔符。

第二次编辑:将链接代码段中的代码移至答案本身。