我遇到以下内容将字符串拆分为“令牌”:
$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
有人可以向我解释这与此有何不同:
$tokens = explode(' ', $string);
非常感谢任何帮助: - )
答案 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
不会,因此生成的数组可能不同。