如何在PHP中替换Microsoft编码的引号“ ” ‘ ’由于我的应用程序中存在编码问题,我需要用常规引号('和“)替换Microsoft Word的单引号和双引号()的版本。我不需要它们是HTML实体,我不能更改我的数据库模式。我有两个选择:使用正则表达式或关联数组。有一个更好的方法吗?
3 回答
![?](http://img1.sycdn.imooc.com/54584cfb0001308402200220-100-100.jpg)
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
我找到了这个问题的答案。你需要使用iconv()
php中的函数只需一行代码:
// replace Microsoft Word version of single and double quotations marks (“ ” ‘ ’) with regular quotes (' and ")$output = iconv('UTF-8', 'ASCII//TRANSLIT', $input);
![?](http://img1.sycdn.imooc.com/54584f3100019e9702200220-100-100.jpg)
繁花不似锦
TA贡献1851条经验 获得超4个赞
您的Microsoft编码引号可能是印刷引号。str_replace
如果您知道要替换它们的字符串的编码,则可以简单地替换它们。
这是UTF-8的示例,但使用单个映射数组strtr
:
$quotes = array( "\xC2\xAB" => '"', // « (U+00AB) in UTF-8 "\xC2\xBB" => '"', // » (U+00BB) in UTF-8 "\xE2\x80\x98" => "'", // ‘ (U+2018) in UTF-8 "\xE2\x80\x99" => "'", // ’ (U+2019) in UTF-8 "\xE2\x80\x9A" => "'", // ‚ (U+201A) in UTF-8 "\xE2\x80\x9B" => "'", // ‛ (U+201B) in UTF-8 "\xE2\x80\x9C" => '"', // “ (U+201C) in UTF-8 "\xE2\x80\x9D" => '"', // ” (U+201D) in UTF-8 "\xE2\x80\x9E" => '"', // „ (U+201E) in UTF-8 "\xE2\x80\x9F" => '"', // ‟ (U+201F) in UTF-8 "\xE2\x80\xB9" => "'", // ‹ (U+2039) in UTF-8 "\xE2\x80\xBA" => "'", // › (U+203A) in UTF-8);$str = strtr($str, $quotes);
如果您需要其他编码,可以使用mb_convert_encoding
转换键。
- 3 回答
- 0 关注
- 479 浏览
添加回答
举报
0/150
提交
取消