2010-04-21 59 views
1

我想通過使用\ w通配符篩選字符串,但不幸的是它不包含元音變音。preg_replace:通配符不匹配元音變音字符

$i = "Die Höhe";  
$x = preg_replace("/[^\w\s]/","",$i); 
echo $x; // "Die Hhe"; 

但是,我可以將所有字符添加到preg_replace,但這不是很優雅,因爲列表將變得非常長。自動取款機,我正在準備這隻適用於德語,但有更多的語言來。

$i = "Die Höhe";  
$x = preg_replace("/[^\w\säöüÄÖÜß]/","",$i); 
echo $x; // "Die Höhe"; 

有沒有辦法一次匹配所有的人?

回答

6

你的字符串是明顯UTF-8,所以你想要的 'u' 標誌和Unicode屬性,而不是\ W

$x = preg_replace('/[^\p{L}\p{N} ]/u',"",$i); 
1

這應該刪除所有,在我看來,非有意義的字符:

$val = "Die Höhe"; 
$val = preg_replace('/[^\x20-\x7e\xa1-\xff]+/u', '', $val); 
echo $val; // "Die Höhe"