PHP preg_replace文本变量

时间:2009-11-14 21:11:17

标签: php string replace variables echo

我想用内部变量回显一个包含($)的字符串,如下所示:

echo "$string";

我不希望它回显字符串的变量,我希望它回显'$ string'本身,而不是变量的内容。我知道我可以通过在($)前加一个'\'来做到这一点,但我想使用preg_replace来做到这一点。我尝试过这个并不起作用:

$new = preg_replace("/\$/","\\$",$text);

4 个答案:

答案 0 :(得分:7)

使用single quotes作为字符串声明:

echo '$string';

单引号内的变量不会扩展:

  

注意:与其他两种语法不同,variables和特殊字符的转义序列会在 时展开单引号strings

另一种解决方案是像$调用中那样逃避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);