如何在PHP中替換Microsoft編碼的引號“ ” ‘ ’由于我的應用程序中存在編碼問題,我需要用常規引號('和“)替換Microsoft Word的單引號和雙引號()的版本。我不需要它們是HTML實體,我不能更改我的數據庫模式。我有兩個選擇:使用正則表達式或關聯數組。有一個更好的方法嗎?
3 回答

蝴蝶刀刀
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);

繁花不似錦
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 關注
- 493 瀏覽
添加回答
舉報
0/150
提交
取消