utf-8 中是否有不同类型的双引号(PHP、str_replace)?

问题描述 投票:0回答:3

在 PHP 5.3 中,我尝试替换字符串中的双引号,如下所示:

$bar = str_replace('"','\'',$foo);

但是保存在 utf8 数据库中的一些引号并未被替换,尽管它们看起来完全正常:

"Some text"

我需要搜索不同的字符类型吗? 如果是的话,他们是谁?

php utf-8 quotes
3个回答
42
投票

有很多看起来像引号的字符,其中大多数不经常使用。最常用的是这三个:

"   U+0022 QUOTATION MARK
“   U+201C LEFT DOUBLE QUOTATION MARK
”   U+201D RIGHT DOUBLE QUOTATION MARK

一些较罕见的标记是全宽引号、同上标记、双引号、双引号等。 Unicode.org“混淆”工具找到 15 个类似于

"
的字符。

为什么不将有问题的字符复制并粘贴到此处以便我们识别它?或者您可以使用 HEX 函数来获取字符的十六进制编码,这是识别它的另一种方法。

更新 unicode.org confusables 实用程序似乎已关闭,但数据可作为文本文件使用。当前使用双引号“容易混淆”的字符列表是:

1CD3 ;  0027 0027 ; MA  #* ( ᳓ → '' ) VEDIC SIGN NIHSHVASA → APOSTROPHE, APOSTROPHE # →″→→"→
0022 ;  0027 0027 ; MA  #* ( " → '' ) QUOTATION MARK → APOSTROPHE, APOSTROPHE   # 
FF02 ;  0027 0027 ; MA  #* ( " → '' ) FULLWIDTH QUOTATION MARK → APOSTROPHE, APOSTROPHE # →”→→"→
201C ;  0027 0027 ; MA  #* ( “ → '' ) LEFT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE   # →"→
201D ;  0027 0027 ; MA  #* ( ” → '' ) RIGHT DOUBLE QUOTATION MARK → APOSTROPHE, APOSTROPHE  # →"→
201F ;  0027 0027 ; MA  #* ( ‟ → '' ) DOUBLE HIGH-REVERSED-9 QUOTATION MARK → APOSTROPHE, APOSTROPHE    # →“→→"→
2033 ;  0027 0027 ; MA  #* ( ″ → '' ) DOUBLE PRIME → APOSTROPHE, APOSTROPHE # →"→
2036 ;  0027 0027 ; MA  #* ( ‶ → '' ) REVERSED DOUBLE PRIME → APOSTROPHE, APOSTROPHE    # →‵‵→
3003 ;  0027 0027 ; MA  #* ( 〃 → '' ) DITTO MARK → APOSTROPHE, APOSTROPHE   # →″→→"→
05F4 ;  0027 0027 ; MA  #* ( ‎״‎ → '' ) HEBREW PUNCTUATION GERSHAYIM → APOSTROPHE, APOSTROPHE   # →"→
02DD ;  0027 0027 ; MA  #* ( ˝ → '' ) DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE  # →"→
02BA ;  0027 0027 ; MA  # ( ʺ → '' ) MODIFIER LETTER DOUBLE PRIME → APOSTROPHE, APOSTROPHE  # →"→
02F6 ;  0027 0027 ; MA  #* ( ˶ → '' ) MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT → APOSTROPHE, APOSTROPHE   # →˝→→"→
02EE ;  0027 0027 ; MA  # ( ˮ → '' ) MODIFIER LETTER DOUBLE APOSTROPHE → APOSTROPHE, APOSTROPHE # →″→→"→
05F2 ;  0027 0027 ; MA  # ( ‎ײ‎ → '' ) HEBREW LIGATURE YIDDISH DOUBLE YOD → APOSTROPHE, APOSTROPHE  # →‎יי‎→

3
投票

我正在寻找

Double low quote
字符,但它没有在上面的答案中列出。终于找到了,所以我分享它以节省一些时间:

“ 一个很好的报价”

„ = 双低报价 /

„
/
„
/
„
/
U+201E

” = 右双引号 /

”
/
”
/
”
/
U+201D


0
投票

能够使用“Unicode 字符的数字 HTML 编码”插入引号

http://www.utf8-chartable.de/unicode-utf8-table.pl?unicodeinhtml=dec&htmlent=1

unicode 代码点对我不起作用:

"   U+0022 QUOTATION MARK

或者,这对我有用:

"   "  QUOTATION MARK
© www.soinside.com 2019 - 2024. All rights reserved.