1

我知道这是做什么的,但是有人可以向我解释 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”表达式吗?

谢谢你。

4

1 回答 1

3

(?: ... )是非捕获组。

.是一个“通配符”,将匹配除换行符以外的任何字符。*是一个量词,代表 0 次或多次。.*表示任何字符 0 次或更多次。

(?:iPhone|Android.*Mobile)表示iPhone (这就是它的|用途)Android,并且Mobile两个单词之间有任意数量的字符。

在这个正则表达式中,非捕获组实际上不是必需的,即使写为:

if (preg_match("/iPhone|Android.*Mobile/", $user_agent) > 0) {

编辑:哦,忘了提到这> 0部分也不是必需的。preg_match已经返回 0 或 1 将被if.

于 2013-09-09T05:38:34.567 回答