【发布时间】:2012-01-13 09:37:00
【问题描述】:
我遇到以下将字符串拆分为“令牌”的方法:
$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
有人可以向我解释一下这与此有何不同:
$tokens = explode(' ', $string);
任何帮助将不胜感激:-)
【问题讨论】:
标签: php regex explode preg-split
我遇到以下将字符串拆分为“令牌”的方法:
$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
有人可以向我解释一下这与此有何不同:
$tokens = explode(' ', $string);
任何帮助将不胜感激:-)
【问题讨论】:
标签: php regex explode preg-split
[^\-_A-Za-z0-9]+ 的字面意思是:
匹配一个或多个不是
-或_或字母A 到Z(大写与否)或数字的单个字符。
preg_split 将根据与上述内容的匹配来拆分输入,但 explode 只会在空白文字上拆分。还有其他字符未从正则表达式中排除,preg_split 将拆分,但 explode 不会,因此生成的数组可能会有所不同。
【讨论】:
您提供的正则表达式:
$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
将使用不是破折号 (-)、下划线 (_)、字母(小写或大写)或数字的分隔符将输入字符串拆分为标记。
鉴于:
$tokens = explode(' ', $string);
只会将字符串拆分为使用空格作为分隔符的标记。
【讨论】: