我知道这是做什么的,但是有人可以用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 :(得分:3)
(?: ... )
是一个非捕获组。
.
是一个'通配符',将匹配除换行符之外的任何字符。 *
是一个量词,代表0次或更多次。 .*
表示任何字符为0次或更多次。
(?:iPhone|Android.*Mobile)
表示iPhone
或(这是|
的用途)Android
和Mobile
的任意数字这两个词之间的字符。
在这个正则表达式中,非捕获组实际上不是必需的,即使写成:
if (preg_match("/iPhone|Android.*Mobile/", $user_agent) > 0) {
编辑:哦,忘了提及> 0
部分也不需要。 preg_match
已经返回0或1,if
将其视为布尔值。