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
我会同意这个解决方案。非常感谢您的回复!