Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP preg_替换文本变量_Php_String_Replace_Variables_Echo - Fatal编程技术网

PHP preg_替换文本变量

PHP preg_替换文本变量,php,string,replace,variables,echo,Php,String,Replace,Variables,Echo,我想回显一个包含($)变量的字符串,如下所示: 我不希望它回显字符串的变量,我希望它回显“$string”本身,而不是变量的内容。我知道我可以通过在($)前面添加一个“\”来实现这一点,但我想使用preg\u replace来实现这一点。我试过这个,但不起作用: $new = preg_replace("/\$/","\\$",$text); 用于字符串声明: echo '$string'; 单引号内的变量不会展开: 注意:与其他两种语法不同,当特殊字符的转义序列出现在单引号中时,不会扩展

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

我不希望它回显字符串的变量,我希望它回显“$string”本身,而不是变量的内容。我知道我可以通过在($)前面添加一个“\”来实现这一点,但我想使用preg\u replace来实现这一点。我试过这个,但不起作用:

$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);