我想用包含 ($) 在内的变量来回显一个字符串,如下所示:
echo "$string";
我不希望它回显字符串的变量,我希望它回显 '$string' 本身,而不是变量的内容。我知道我可以通过在 ($) 前面添加一个“\”来做到这一点,但我想使用 preg_replace 来做到这一点。我试过了,但它不起作用:
$new = preg_replace("/\$/","\\$",$text);
如果我正确理解你的问题,你就不能用preg_replace
来做你想做的事。preg_replace
在变量替换发生后获取它的参数。
所以要么preg_replace
不需要替换(因为替换已经发生),要么不需要preg_replace
做任何事情(因为美元符号已经被转义)。
正如您所观察到的,$
在双引号字符串中对变量插值进行了处理。所以你的正则表达式模式也应该使用单引号字符串来构造。此外,$
是正则表达式替换字符串中的一个特殊字符,因此您需要额外转义它:
preg_replace('/\$/', '\\\\$', $text)
但是这里不需要 preg_ 函数。str_replace 应该这样做:
str_replace('$', '\\$', $text)
这可能会为您解决问题,但正如 Gumbo 所建议的那样:为什么不使用单引号来回显呢?
好吧,我认为您想删除某些变量中存在的文本。然后你可以这样做
$foo = '123';
$bar = 'bqwe';
$str= preg_replace("/".$foo ."/", '', $str, 1);
$str= preg_replace("/".$bar ."/", '', $str, 1);