【问题标题】:what ASCII characters are these?这些是什么 ASCII 字符?
【发布时间】:2011-03-25 17:02:47
【问题描述】:

我有两个字符需要在 php 字符串中进行搜索和替换。

不知何故,这些不同于:

  1. '
  2. "

有谁知道我可以使用什么函数从 php 字符串中去除这些?

【问题讨论】:

  • 前两个不是 ASCII。它们以“智能/花式引号”而闻名,主要来自某个办公套件*咳嗽*,如果您的网站以某种编码指定,这不是问题——但遗憾的是,这与 Unicode 不兼容。 (现在,公平地说,Unicode 中应该有等价物——大概是 SO 现在使用的)
  • 这个可爱的字符在很长一段时间内一直是我的主要编码痛苦。
  • 如果您正在处理这些字符,您可能还会遇到连字符 ()。如果您不使用 UTF-8,那就太烦人了。

标签: php string ascii


【解决方案1】:

当有人在 Outlook 中向您发送电子邮件时会发生这种情况,所以要小心,因为您完全错过了那些单引号的开始对和双引号的结束对。 But really, you need to be using html entity codes

为什么?因为荒野中的代码比您上面发布的那两个代码要多得多,事实上,您只显示了一半的引号(即,您错过了结束单引号和开始双引号) .有数百个,您需要以比字符串替换更好的方式对它们进行编码。

有几种方法可以管理从编码到 html 实体的转换。

http://php.net/manual/en/function.htmlentities.php

http://piology.org/entities.html

http://konieczny.be/unicode.html

还有更多,但它们基本上做同样的事情。

【讨论】:

    【解决方案2】:

    在保存为 UTF-8 的 PHP 脚本中(以便正确表示这些字符),您可以简单地使用 str_replace 去除它们。

    【讨论】:

      【解决方案3】:

      您所拥有的称为智能引号或弯引号。有人在做类似的事情。 Chris Shiflett

      【讨论】:

        【解决方案4】:

        检查一下,我一直在使用它并且它有效:

        How To Clean Special Characters From PHP String

        【讨论】:

          【解决方案5】:

          为什么不直接使用str_replace

          $new_str = str_replace(array('’', '“'), '', $str);
          

          当然,这要求你的 PHP 脚本保存为 UTF-8。


          如果这不起作用,因为这些字符无法使用 UTF-8 正确写入,您将不得不回退到使用它们的十六进制表示。

          例如:

          $new_str = str_replace(array('\xC2\x91', '\xC2\x93'), '', $str);
          

          (不确定我使用的十六进制值是否真的是你的两个特殊引号的值)

          【讨论】:

            猜你喜欢
            • 2012-04-06
            • 2011-12-14
            • 2013-05-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-09
            • 2012-05-08
            相关资源
            最近更新 更多