【问题标题】:PHP preg_replace text variablePHP preg_replace 文本变量
【发布时间】:2010-12-16 16:13:29
【问题描述】:

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

echo "$string";

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

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

【问题讨论】:

    标签: php string replace variables echo


    【解决方案1】:

    使用single quotes 进行字符串声明:

    echo '$string';
    

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

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

    另一种解决方案是像您在 preg_replace 调用中所做的那样逃避 $

    echo "\$string";
    

    【讨论】:

      【解决方案2】:

      如果我正确理解您的问题,您就不能使用preg_replace 来做您想做的事。 preg_replace在变量替换发生后获取它的参数。

      所以preg_replace 没有任何东西可以替换(因为替换已经发生),或者preg_replace 不需要做任何事情(因为美元符号已经被转义)。

      【讨论】:

        【解决方案3】:

        正如您所观察到的,$ 被处理为双引号字符串内的变量插值。所以你的正则表达式模式也应该使用单引号字符串来构造。此外,$ 是正则表达式替换字符串中的一个特殊字符,因此您需要额外对其进行转义:

        preg_replace('/\$/', '\\\\$', $text)
        

        但是这里不需要 preg_ 函数。 str_replace 应该这样做:

        str_replace('$', '\\$', $text)
        

        这可能会为您解决问题,但正如 Gumbo 建议的那样:为什么不使用单引号来回显?

        【讨论】:

          【解决方案4】:

          好吧,我认为您想删除某些变量中存在的文本。然后你可以这样做

           $foo = '123';  
           $bar = 'bqwe';                      
           $str= preg_replace("/".$foo ."/", '', $str, 1);
           $str= preg_replace("/".$bar ."/", '', $str, 1);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-11-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多