2013-10-28 36 views
6

我有下面這段代碼似乎正在改變我的字符集。preg_replace()是否改變我的字符集?

 $html = "à"; 
    echo $html; // result: à 
    $html = preg_replace("/\s/", "", $html); 
    echo $html; // result: ? 

然而,當我使用[\t\n\r\f\v]作爲我的模式,而不是特殊字符\s的正常工作:

 $html = "à"; 
    echo $html; // result: à 
    $html = preg_replace("/[\t\n\r\f\v]/", "", $html); 
    echo $html; // result: à 

這是爲什麼?

+0

兩者都給我相同的輸出。 http://ideone.com/Xo7RLR – falsetru

+0

您使用的是什麼版本的PHP? – user4035

+0

@ user4035 PHP版本5.3.24 –

回答

10

我有同樣的問題。這是因爲UTF8。

à是使用UTF8的0xc3a0。在PHP中,你可以這樣寫:"\xc3\xa0"

與PCRE /s匹配0xa0就像它是ASCII「不間斷的空間」。

您可以使用u flag來解決問題。

$html = preg_replace("/\s/u", "", $html);