【问题标题】:Why would str_replace not replace question marks?为什么 str_replace 不能替换问号?
【发布时间】:2011-07-16 05:19:33
【问题描述】:

我有一个带有问号 ('?') 的字符串,我想用可解析的内容替换它。

但是 str_replace 不会替换任何 ?我的字符串中的字符...

$str = str_replace('?', 'replacement', $str);

有什么想法吗?

【问题讨论】:

    标签: php preg-replace str-replace


    【解决方案1】:

    该代码确实用替换词替换了问号,这意味着这不是您正在使用的代码,或者您的字符串中的内容不是问号。

    PHP 的字符串函数只能在 latin1 (iso-8859-1) 编码的字符串上正确运行。在许多编码中,可能有许多代码点对应于一个字形,在视觉上看起来像一个问号,但与 ASCII 不同?。


    $str = "Hello? Anyone home?";
    $str = str_replace('?', 'replacement', $str);
    echo $str;
    

    输出:

    Helloreplacement 任何人的家庭替换

    【讨论】:

    • +1 表示良好的推理 + 支持。编码似乎是这里的罪魁祸首。
    • 我发现了我的问题。我的字符串有一些特殊字符(十六进制值 80 和 0x93)。如何清除这些特殊字符的字符串?
    • 是什么让它们与众不同?你想对他们做什么?如果你的“净化”改变了文本的含义怎么办?
    【解决方案2】:

    这会将? 替换为space。这可能会对您有所帮助。

    <?php
    $str = "this ? does ? indeed ? work";
    $char='';
    $str1 = str_replace('?',$char,$str);
    echo $str1;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      相关资源
      最近更新 更多