请向我解释这个正则表达式
我遇到了以下问题,将字符串拆分为“令牌”:
$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
有人可以向我解释一下这与此有何不同:
$tokens = explode(' ', $string);
任何帮助将不胜感激:-)
I came across the following to split a string into "tokens":
$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
Could somebody explain to me how this is different from this:
$tokens = explode(' ', $string);
Any help would be greatly appreciated :-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您提供的正则表达式:
将使用不是破折号 (-)、下划线 (_)、字母(小写或大写)或数字的分隔符将输入字符串拆分为标记。
而:
只会使用空格作为分隔符将字符串拆分为标记。
The regular expression you provided:
will split an input string into tokens using a delimiter that is not a dash (-), underscore (_), letter (lowercase or uppercase), or number.
Whereas:
Will only split the string into tokens using whitespace as a delimiter.
[^\-_A-Za-z0-9]+
的字面读法是:preg_split
将根据与上述内容的匹配来拆分输入,但explode
只会根据空白文字进行拆分。正则表达式中还没有排除其他字符,preg_split
将对其进行拆分,但explode
不会,因此生成的数组可能会有所不同。The literal reading of
[^\-_A-Za-z0-9]+
is:preg_split
will split the input based on matches to the above, butexplode
will only split on a whitespace literal. There are other characters not excluded from the regular expression whichpreg_split
will split on butexplode
won't, so the resulting arrays could be different.