如何使用 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
在这里做的),所以模式内容中的任何出现也可以在应用之前转义。
编辑:我修改了代码片段以涵盖文件内容中出现的分隔符。
第二次编辑:将链接代码段中的代码移至答案本身。
我尝试过不同的方法,将 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
在这里做的),所以模式内容中的任何出现也可以在应用之前转义。
编辑:我修改了代码片段以涵盖文件内容中出现的分隔符。
第二次编辑:将链接代码段中的代码移至答案本身。