2011-03-25 45 views
3

我有两个字符,我需要在php字符串中进行搜索和替换。这些是什么ASCII字符?

不知何故这些是不同的从:

  1. '
  2. "

有谁知道我可能用什么函数从PHP字符串中去除这些内容?

+2

前两个不是ASCII码。它们被称为“聪明/奇特的引号”,主要来自某个办公室套件*咳嗽*,并且如果您的网站使用某种编码进行了指定,则它不会成为问题 - 但遗憾的是,它与Unicode不兼容。 (现在,公平的说,Unicode应该有相应的东西 - 可以说是现在使用的东西) – delnan 2011-03-25 17:06:51

+0

这个可爱的人物在很长的一段时间里一直是我的主要编码难题。 – amosrivera 2011-03-25 17:07:34

+0

如果你正在处理这些角色,你也可能会遇到那种破折号('-')。如果你没有使用UTF-8,那很烦人。 – 2011-03-25 17:13:38

回答

2

这就是当有人在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

有也比较多,但他们基本上做同样的事情。

1

里面保存为UTF-8(所以这些字符正确replresented)PHP脚本,你可以简单地使用str_replace剥去它们。

0

为什么不只是使用str_replace

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

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


如果这行不通,因为这些字符不能正常使用UTF-8编写的,你就必须退回到使用他们的十六进制表示。

例如:

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

(不知道我使用的十六进制值是真的那你的两个特殊报价,虽然)

1

你有什么叫智能引号,或弯引号。有人在做类似的事情。 Chris Shiflett

+0

+1解决核心问题。 – Incognito 2011-03-25 17:16:34