$username = preg_replace("/[^\p{L}|\p{N}]/u", "", html_entity_decode($username));
这允许$username
中的“字母”和“数字”,删除其他所有内容。
但我怎么能在混合中允许 "."
点符号?也"-"
会很好。
非常感谢!
答案 0 :(得分:6)
只需将它们添加到角色类中:
$var = 'Василий. Теркин-';
$username = preg_replace('/[^\p{L}\p{N}.-]/u', "", $var);
var_dump($username); // Василий.Теркин-
Demo。我已经删除了|
,因为它显然已被字符类覆盖(显然不应该在字符类中用作替换 - 毕竟,类是一个替换)。 )
答案 1 :(得分:3)
.
在字符类中没有意义,因此不需要转义。 -
无论是第一个还是最后一个角色都没有意义。
$username = preg_replace("/[^a-z0-9.-]/u","",html_entity_decode($username));
答案 2 :(得分:-1)
使用\
我没有诚实地得到你的正则表达式的其余部分,但这就是你使用特殊字符的方式。
我将使用的正则表达式是:[a-z0-9\-\.]
(添加不区分大小写的标志)。