utf-8 (PHP, str_replace) 中是不是有不同类型的双引号?
Posted
技术标签:
【中文标题】utf-8 (PHP, str_replace) 中是不是有不同类型的双引号?【英文标题】:Are there different types of double quotes in utf-8 (PHP, str_replace)?utf-8 (PHP, str_replace) 中是否有不同类型的双引号? 【发布时间】:2013-09-15 04:00:05 【问题描述】:在 php 5.3 中,我尝试替换字符串中的双引号:
$bar = str_replace('"','\'',$foo);
但是保存在 utf8-Database 中的一些引号并没有被替换,尽管它们看起来非常正常:
"Some text"
我需要搜索不同的字符类型吗? 如果有,它们是什么?
【问题讨论】:
【参考方案1】:有很多字符看起来像引号,其中大多数不经常使用。用得比较多的是这三个:
" U+0022 QUOTATION MARK
“ U+201C LEFT DOUBLE QUOTATION MARK
” U+201D RIGHT DOUBLE QUOTATION MARK
一些比较少见的是全宽引号、同上引号、双引号、双引号等。 Unicode.org 的“confusables”工具会找到15 characters similar to "
。
您为什么不在这里复制并粘贴有问题的字符以便我们识别它?或者你可以使用 HEX 函数来获取字符的十六进制编码,这是另一种识别方式。
【讨论】:
谢谢@Joni,这听起来很棒!我们正在调查。 我们现在用$bar = rawurlencode(utf8_decode($foo));
解决了这个问题,但是你的“易混淆”链接很棒【参考方案2】:
能够使用“Unicode 字符的数字 html 编码”插入引号
http://www.utf8-chartable.de/unicode-utf8-table.pl?unicodeinhtml=dec&htmlent=1
unicode 代码点对我不起作用:
" U+0022 QUOTATION MARK
另外,这对我有用:
" " QUOTATION MARK
【讨论】:
【参考方案3】:我正在搜索 Double low quote
字符,但它未在上述答案中列出。终于找到了,为了节省时间,分享一下:
„ 一个不错的引文”
„ = Double low quote / „
/ „
/ „
/ U+201E
” = Right Double Quotation / ”
/ ”
/ ”
/ U+201D
【讨论】:
这不是在英语中使用的,而是在德语和其他一些语言中的标准开头引用,这些语言在当地印刷惯例的形成时期的某个时间点受到德国的影响。如果要覆盖多种语言的引号,还需要覆盖guillemets等。这里有一个流行的参考:jakubmarian.com/map-of-quotation-marks-in-european-languages以上是关于utf-8 (PHP, str_replace) 中是不是有不同类型的双引号?的主要内容,如果未能解决你的问题,请参考以下文章