我知道这是做什么的,但是有人可以向我解释PHP中这个字符串的reg ex语法吗?
if (preg_match("/(?:iPhone|Android.*Mobile)/", $user_agent) > 0) {
我知道它在用户代理字符串中找到iPhone或Android,这就是我正在寻找的:
? means what - beginning of string?
: means what - characters leading up to the search phrase?
.*Mobile means it will only match iPhone blah blah Mobile or Android blah blah Mobile?
还有一个问题 - 我们是否需要"> 0"来表示匹配,或者我可以只做一个"if"表达式?
谢谢。
(?: ... )
是一个非捕获组。
.
是"通配符",将匹配除换行符以外的任何字符。 *
是一个量词,代表 0 或更多次。 .*
表示任何字符 0 次或更多次。
(?:iPhone|Android.*Mobile)
表示iPhone
或(这就是|
的用途)Android
和Mobile
两个单词之间包含任意数量的字符。
在此正则表达式中,非捕获组实际上不是必需的,即使编写为:
if (preg_match("/iPhone|Android.*Mobile/", $user_agent) > 0) {
编辑:哦,忘了提到> 0
部分也不是必需的。 preg_match
已经返回 0 或 1,if
将其视为布尔值。