我想在每次找到特殊字符时拆分一个字符串。
我这样做了:
preg_split("[\\W]", $str);
但这仍然允许下划线(也许更多?)
是否可以只说允许a-z A-Z和数字并拆分任何不属于这些的东西?
答案 0 :(得分:4)
您刚刚回答了您的问题:
preg_split('~[^a-z0-9]~i', $str);
[^a-z0-9]
否定的字符类匹配a-z
以外的任何字符(由A-Z
修饰符引起的i
除外)数字(用0-9
定义)。
另一种方法是在否定字符类中使用POSIX [:alnum:]
字符类:
'~[^[:alnum:]]~'
请参阅regex demo
请注意,使用单个char正则表达式分隔符而不是配对分隔符更容易,我最喜欢的是~
。它很少用于正则表达式模式,因此我不必在模式中逃避太多。