我想用内部变量回显一个包含($)的字符串,如下所示:
echo "$string";
我不希望它回显字符串的变量,我希望它回显'$ string'本身,而不是变量的内容。我知道我可以通过在($)前加一个'\'来做到这一点,但我想使用preg_replace来做到这一点。我尝试过这个并不起作用:
$new = preg_replace("/\$/","\\$",$text);
答案 0 :(得分:7)
使用single quotes作为字符串声明:
echo '$string';
单引号内的变量不会扩展:
另一种解决方案是像$
调用中那样逃避preg_replace
:
echo "\$string";
答案 1 :(得分:1)
如果我正确理解您的问题,则无法使用preg_replace
来执行您想要的操作。 preg_replace
在变量替换发生后得到它的参数。
所以要么preg_replace
没有替换(因为替换已经发生),或者preg_replace
没有必要做任何事情(因为美元符号已经被转义)。
答案 2 :(得分:0)
正如您所观察到的,$
被视为双引号字符串中的变量插值。所以你的正则表达式模式也应该用单引号字符串构造。此外,$
是正则表达式替换字符串中的特殊字符,因此您需要额外转义它:
preg_replace('/\$/', '\\\\$', $text)
但这里不需要preg_函数。 str_replace应该这样做:
str_replace('$', '\\$', $text)
这可能会让你感到清楚,但正如Gumbo建议的那样:为什么不用单引号来回应呢?
答案 3 :(得分:0)
好吧我想你想删除一些变量中存在的文本。然后你可以像
那样做 $foo = '123';
$bar = 'bqwe';
$str= preg_replace("/".$foo ."/", '', $str, 1);
$str= preg_replace("/".$bar ."/", '', $str, 1);