【问题标题】:Does single or double quote matter in str_ireplace in PHP?PHP中str_ireplace中的单引号或双引号重要吗?
【发布时间】:2010-12-25 19:39:13
【问题描述】:

我必须在字符串中用 & 替换换行符 (\n),以便接收到的数据可以用 parse_str() 解析到数组中。问题是,当我将 \n 放在单引号中时,它会以某种方式被替换为空格:

str_ireplace(array('&', '+', '\n'), array('', '', '&'), $response)
"id=1 name=name gender=gender age=age friends=friends"

但是当我将 \n 放在双引号中时,它就可以正常工作:

str_ireplace(array('&', '+', "\n"), array('', '', '&'), $response)
"id=1&name=name&gender=gender&age=age&friends=friends"

为什么会这样?

【问题讨论】:

    标签: php replace


    【解决方案1】:

    因为只有转义序列 \'\\ 在单引号字符串中才有意义。
    documentation

    要指定文字单引号,请使用反斜杠 (\) 对其进行转义。要指定文字反斜杠,请将其加倍 (\\)。所有其他反斜杠实例将被视为文字反斜杠:这意味着您可能习惯使用的其他转义序列,例如 \r\n,将按指定字面输出而不是具有任何特殊含义。

    更新:

    另一个区别是PHP只有substitutes variables inside double-quoted strings (and heredoc)。因此,您可以考虑处理单引号字符串通常更快(但可能不会更快)。


    顺便说一句,您不一定需要使用str_ireplace,因为&+\n 没有大小写版本。只有一个版本,所以str_replace 就足够了。

    【讨论】:

    • 是的,我用单引号写我的代码,因为它通常更快。感谢您的两个提示 - 更改为 str_replace! :}
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 2016-03-18
    • 2019-04-21
    • 2021-09-24
    • 2012-10-16
    • 2011-06-02
    • 2013-02-05
    • 1970-01-01
    相关资源
    最近更新 更多