類似如下的字符串(GBK), explode不能得到正確結果:
1.$result = explode("|", "滕華弢|海青"); 究其原因, 對於”弢”字(讀tao,不認識沒關系,我也不認識), 因為他的GBK編碼值為: 8f7c, 不巧的是, “|”的ASCII值也是7c.
這樣的問題, 還有很多 : 因為GBK編碼的編碼范圍是: 0×8140-0xfefe, 所以, 理論上來說, 任何低字節是7c的字都會有這個問題, 比如:
1.倈(827c), 億(837c), 眧(b17c), 鍇(e57c).......等等等等對於這樣的情況,
1.第一, 可以采用轉碼到utf8, 然後explode, 再轉回來, 這是比較麻煩的方法.
2.第二, 我們可以采用正則拿"匹配出"來代替"分離出":
3.preg_match_all("/([/x81-/xfe][/x40-/xfe])+/", $gbk_str, $matches);//寫死編碼這樣, $matches中0號索引對應的數組就是結果詞的數組了..