我想呼应里面包括($)与变量的字符串,像这样:PHP的preg_replace文本变量
echo "$string";
我不希望它反映了对字符串变量,我希望它回声“$字符串“本身,而不是变量的内容。我知道我可以通过在($)前添加一个'\'来完成此操作,但我想使用preg_replace来完成此操作。我想这和它不工作:
$new = preg_replace("/\$/","\\$",$text);
我想呼应里面包括($)与变量的字符串,像这样:PHP的preg_replace文本变量
echo "$string";
我不希望它反映了对字符串变量,我希望它回声“$字符串“本身,而不是变量的内容。我知道我可以通过在($)前添加一个'\'来完成此操作,但我想使用preg_replace来完成此操作。我想这和它不工作:
$new = preg_replace("/\$/","\\$",$text);
使用single quotes为您的字符串声明:
echo '$string';
单引号内的变量没有得到扩大:
另一个解决方案是为了躲避$
像你已经在preg_replace
调用中所做的:
echo "\$string";
如果我正确理解你的问题,你不能使用preg_replace
做你想做什么。 preg_replace
在变量替换发生后获取它的参数。
因此,无论有没有什么为preg_replace
更换(因为替代已经发生),或者没有必要preg_replace
做任何事情(因为美元符号已经逃走)。
正如您所看到的那样,$
在双引号字符串内部进行了可变插值处理。所以你的正则表达式模式也应该使用单引号字符串来构建。此外,$
是正则表达式替换字符串内使用特殊字符,所以你需要额外的转义:
preg_replace('/\$/', '\\\\$', $text)
但有没有必要在这里参看preg_功能。 str_replace函数应该这样做:
str_replace('$', '\\$', $text)
这可能明确的事情了你,但浓汤建议:为什么不使用单引号来呼应?
嗯,我想你想删除一些变量中存在的文本。然后你就可以像
$foo = '123';
$bar = 'bqwe';
$str= preg_replace("/".$foo ."/", '', $str, 1);
$str= preg_replace("/".$bar ."/", '', $str, 1);
哈哈哇谢谢 – David 2009-11-14 21:14:38