2011-07-21 37 views
1

我想從下面的字符串中刪除一些不需要的字符。 這是代碼。preg_replace:替換一切,但

$input="aecąßÄ1,.!?-_'\"/><"; 
    $input=preg_replace('/[^\p{P}\p{L}\p{N}\s]*/u', '', $input); 

該代碼似乎工作正常,但特殊字符在輸出中丟失。 這是我得到的。

aec���1,.!?-_'"/ 

而不是

aecąßÄ1,.!?-_'"/ 

爲什麼會這樣呢?

+3

不會丟失,只是錯誤的編碼。 – KingCrunch

+0

那我該如何解決呢? –

+0

echo utf8_encode($ input); –

回答

0

編輯基於評論:

嘗試使用 「實」 字:

$input= preg_replace('/[^aecąßÄ1,.!?-_\'\"\/]/', '', $input); 

最後的答案:

如果你想刪除不想要的字符,你可以刪除字符與更簡單的正則表達式:

$input= "aecąßÄ1,.!?-_'\"/><"; 
$input= preg_replace('/[<>]/', '', $input); 

只需在[]中的正則表達式中插入特殊字符。這將適用於你的情況。

+0

謝謝,但這不是我想要的。我想刪除'一切,但'不是'一切'。 –