对所有特殊字符使用preg_split

时间:2016-07-14 10:07:25

标签: php regex

我想在每次找到特殊字符时拆分一个字符串。

我这样做了:

preg_split("[\\W]", $str);

但这仍然允许下划线(也许更多?)

是否可以只说允许a-z A-Z和数字并拆分任何不属于这些的东西?

1 个答案:

答案 0 :(得分:4)

您刚刚回答了您的问题:

preg_split('~[^a-z0-9]~i', $str);

请参阅this regex demo

[^a-z0-9] 否定的字符类匹配a-z以外的任何字符(由A-Z修饰符引起的i除外)数字(用0-9定义)。

另一种方法是在否定字符类中使用POSIX [:alnum:]字符类:

'~[^[:alnum:]]~'

请参阅regex demo

请注意,使用单个char正则表达式分隔符而不是配对分隔符更容易,我最喜欢的是~。它很少用于正则表达式模式,因此我不必在模式中逃避太多。