我從.xlsx文件得到一個字符串 - >"N°X"
我想通過Num_X
更換"N°"
我試圖做到這一點與
$var = str_replace("N°","Num_",$var);
但沒有被替換(根據echo $var
) 問題來自°
因爲當我嘗試替換一些字符串其他 (無°
)str_replace工程
有什麼建議嗎?
我從.xlsx文件得到一個字符串 - >"N°X"
我想通過Num_X
更換"N°"
我試圖做到這一點與
$var = str_replace("N°","Num_",$var);
但沒有被替換(根據echo $var
) 問題來自°
因爲當我嘗試替換一些字符串其他 (無°
)str_replace工程
有什麼建議嗎?
確保輸入字符串是UTF8。
$var = "N°X";
print mb_detect_encoding($var);
如果你沒有得到UTF-8
了這一點,把它轉換:
$var = mb_convert_encoding($var, 'UTF-8');
然後按預期的str_replace
將工作。
另一個可能幫助你解決編碼問題的工具是xxd
。
php -r '$var = "N°X"; echo $var;' | xxd
應返回
00000000: 4ec2 b058 N..X
從而揭示了中間字符被編碼爲C2B0十六進制,這是 Unicode字符 '度SIGN'(U + 00B0)。 fileformat.info現在得心應手。
也謹防unicode [NUMERO SIGN](http://www.fileformat.info/info/unicode/char/2116/index.htm)字符(№)。 –
哎呀,我想我會得到一些通知,如果我得到一些答案 是的,這就是我所做的$ var = mb_convert_encoding($ var,「Windows-1252」,「UTF-8」);它的工作原理:) 謝謝 –
這可能與您要替換的角色不同,但角色看起來很相似。 – Barmar
嘗試mb_str_replace,但它適用於本地。它必須是一個不同於你想象的字符 – Ice76
@ Ice76我在本地機器上嘗試過,似乎很好。 – ctwheels