Php 逃逸$0,$1。。用preg_替换

Php 逃逸$0,$1。。用preg_替换,php,regex,preg-replace,Php,Regex,Preg Replace,我有类似的想法: <?php $text = 'lorem ipsum'; $pattern = '/lorem/'; $value = 'test $0'; $text = preg_replace($pattern, $value, $text); ?> 我希望$text的最终值为“test$0 ipsum”。问题是$0被解释为一个变量并替换为“lorem”,所以我得到了“test-lorem-ipsum” 有没有办法禁用preg_replace()的此功能 上面的例子当

我有类似的想法:

<?php
$text = 'lorem ipsum';
$pattern = '/lorem/';
$value = 'test $0';

$text = preg_replace($pattern, $value, $text);
?>

我希望$text的最终值为“test$0 ipsum”。问题是$0被解释为一个变量并替换为“lorem”,所以我得到了“test-lorem-ipsum”

有没有办法禁用preg_replace()的此功能

上面的例子当然简化了。我实际上是在做一个模板脚本,用文件内容替换占位符,可以是javascript、html等。。。因此,最好对preg_replace函数本身进行操作,而不是被迫修改所有文件,确保它们具有转义字符


谢谢

您可以用替换值中任何返回引用的转义来替换:

<?php
$text = 'lorem ipsum';
$pattern = '/lorem/';
$value = 'test $0';
echo preg_replace($pattern, preg_replace('/\$(\d+)/', '\\\$$1', $value), $text);
使用,它是正确的操作工具:

$text = 'lorem ipsum';
$pattern = '/lorem/';
$value = 'test $0';
$text = preg_replace($pattern, preg_quote($value), $text);
echo $text;
输出:

test $0 ipsum

我会同意这个解决方案。非常感谢您的回复!