PHP preg_替换文本变量
我想回显一个包含($)变量的字符串,如下所示: 我不希望它回显字符串的变量,我希望它回显“$string”本身,而不是变量的内容。我知道我可以通过在($)前面添加一个“\”来实现这一点,但我想使用preg\u replace来实现这一点。我试过这个,但不起作用:PHP preg_替换文本变量,php,string,replace,variables,echo,Php,String,Replace,Variables,Echo,我想回显一个包含($)变量的字符串,如下所示: 我不希望它回显字符串的变量,我希望它回显“$string”本身,而不是变量的内容。我知道我可以通过在($)前面添加一个“\”来实现这一点,但我想使用preg\u replace来实现这一点。我试过这个,但不起作用: $new = preg_replace("/\$/","\\$",$text); 用于字符串声明: echo '$string'; 单引号内的变量不会展开: 注意:与其他两种语法不同,当特殊字符的转义序列出现在单引号中时,不会扩展
$new = preg_replace("/\$/","\\$",$text);
用于字符串声明:
echo '$string';
单引号内的变量不会展开:
注意:与其他两种语法不同,当特殊字符的转义序列出现在单引号中时,不会扩展
另一个解决方案是像您在preg\u replace
调用中所做的那样,退出$
:
echo "\$string";
如果我正确理解了你的问题,你就不能使用
preg\u replace
来做你想做的事preg_replace
在变量替换发生后获取其参数
因此,
preg\u replace
无需替换(因为替换已经发生),或者,preg\u replace
无需执行任何操作(因为美元符号已经转义)。正如您所观察到的,$
被处理为双引号字符串中的变量插值。因此,您的正则表达式模式也应该使用单引号字符串构造。另外,$
是正则表达式替换字符串中的一个特殊字符,因此需要对其进行额外转义:
preg_replace('/\$/', '\\\\$', $text)
但是这里不需要preg_u函数。str_replace应该这样做:
str_replace('$', '\\$', $text)
这可能会为您澄清一些问题,但正如Gumbo所建议的:为什么不使用单引号来回应?我认为您希望删除某些变量中存在的文本。然后你可以像这样做
$foo = '123';
$bar = 'bqwe';
$str= preg_replace("/".$foo ."/", '', $str, 1);
$str= preg_replace("/".$bar ."/", '', $str, 1);
$foo = '123';
$bar = 'bqwe';
$str= preg_replace("/".$foo ."/", '', $str, 1);
$str= preg_replace("/".$bar ."/", '', $str, 1);