我想使用\ w通配符过滤一个字符串,但不幸的是它不包括变音符号。
$i = "Die Höhe";
$x = preg_replace("/[^\w\s]/","",$i);
echo $x; // "Die Hhe";
但是,我可以将所有字符添加到preg_replace,但这不是很优雅,因为列表会变得很长。 ATM,我只是为德国人准备这个,但还有更多的语言。
$i = "Die Höhe";
$x = preg_replace("/[^\w\säöüÄÖÜß]/","",$i);
echo $x; // "Die Höhe";
有没有办法一次匹配所有这些?
答案 0 :(得分:6)
你的字符串显然是UTF-8,所以你需要'u'标志和unicode属性而不是\ w
$x = preg_replace('/[^\p{L}\p{N} ]/u',"",$i);
答案 1 :(得分:1)
这应该删除所有,在我看来,没有意义的字符:
$val = "Die Höhe";
$val = preg_replace('/[^\x20-\x7e\xa1-\xff]+/u', '', $val);
echo $val; // "Die Höhe"