请向我解释这个正则表达式

时间:2011-12-05 16:54:29

标签: php regex explode preg-split

我遇到以下内容将字符串拆分为“令牌”:

$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);

有人可以向我解释这与此有何不同:

$tokens = explode(' ', $string);

非常感谢任何帮助: - )

2 个答案:

答案 0 :(得分:5)

您提供的正则表达式:

$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);

将使用不是短划线( - ),下划线(_),字母(小写或大写)或数字的分隔符将输入字符串拆分为标记。

鉴于:

$tokens = explode(' ', $string);

只会使用空格作为分隔符将字符串拆分为标记。

答案 1 :(得分:2)

[^\-_A-Za-z0-9]+的字面读数是:

  

匹配一个或多个不是-_或字母A到Z(大写与否)或数字的个字符。

preg_split会根据与上述匹配的内容对输入进行拆分,但explode只会拆分空白文字。正则表达式中没有排除其他字符preg_split将分开但explode不会,因此生成的数组可能不同。