2

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

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

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

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

任何帮助将不胜感激 :-)

4

2 回答 2

5

您提供的正则表达式:

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

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

然而:

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

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

于 2011-12-05T16:56:20.277 回答
2

的字面意思[^\-_A-Za-z0-9]+是:

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

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

于 2011-12-05T17:00:32.897 回答