【问题标题】:preg_repace single quote issue.preg_replace 单引号问题。
【发布时间】:2016-10-05 23:31:28
【问题描述】:

我想用反斜杠单引号替换单引号。当我执行 echo 时尝试了下面的 php 代码,它正确显示,但是当我执行 error_log 时,它显示一个额外的反斜杠。不确定我是否做错了什么或 error_log 函数正在逃避它。

$cont="a'b";
// display a\'b
echo preg_replace("/'/", "\\'" , $cont);
// displays a\\'b in apache error log file
error_log(preg_replace("/'/", "\\'" , $cont);

【问题讨论】:

  • echo str_replace("'", "\'", $cont);
  • addslashes() 函数
  • 正则表达式引擎需要看到:\\' 所以正则表达式字符串需要是:"/\\\\'/"" - 因为字符串插值会吃掉第一个反斜杠。
  • 到目前为止,这些 cmets 都不起作用。此外,我认为 PHP 不会有帮助,因为我认为这与服务器有关,在我的例子中是 Apache 2.4。我注意到即使使用 ASCII 码 error_log(chr(92)); 最终在日志中有两个反斜杠 \\。
  • @JeffPuckettII 如果有问题,应该是特定于 PHP 的。它根本与服务器无关。

标签: php regex


【解决方案1】:

您的代码中有语法错误。您在调用error_log() 的最后一行缺少右括号:

完整代码:

$cont="a'b";
// display a\'b
echo preg_replace("/'/", "\\'" , $cont);
// displays a\\'b in apache error log file
error_log(preg_replace("/'/", "\\'" , $cont));

截图:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多