2014-03-26 88 views
0

讓我們說我們有隨機字符串這樣的:如何用preg_replace和PHP替換特殊字符?

$ str_test = 「faafŠšCCZ的DJčšđCCS ZZ發fssfa AFZafžsaF」;

和大家做一些關於它的preg_replace函數:

preg_replace("/[^\da-z ]/i", "_", $str_test); 

而結果我得到的是:

faaf__ __ ______ ____ ______ ______ ____ fa fssfa af__ af__sa f 

所以,如果我們比較博特 - 輸入和輸出:

faaf__ __ ______ ____ ______ ______ ____ fa fssfa af__ af__sa f 
faafŠ š čćž đš čšđ ćčš žž fa fssfa afž afžsa f 

我們可以看到所有的特殊字符都被兩個s替代ignt「_」 ......結果應該是:

faaf_ _ ___ __ ___ ___ __ fa fssfa af_ af_sa f 
faafŠ š čćž đš čšđ ćčš žž fa fssfa afž afžsa f 

我曾與編碼已經嘗試過,但沒有成功。我也想過做函數做多的preg_match一次,不是取代「_ 」與「 「......但這對大文本來說會很慢......

任何想法?

+0

你試過'/ [^ \ da-z] {1,2}/i'嗎? –

+1

1)。確保你的php文件具有UTF-8編碼而不用BOM。 2)。在preg_replace函數集標誌處理這個作爲unicode小寫字母'u'後最後一個斜槓'/'或'我'標誌 – przeqpiciel

回答

0

爲什麼不使用PHP的多字節功能構建?

mb_ereg_replace是在這裏使用的。 Manual