在PHP中使用Reg表达式

时间:2013-09-09 05:35:14

标签: php regex user-agent

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

谢谢。

1 个答案:

答案 0 :(得分:3)

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

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

(?:iPhone|Android.*Mobile)表示iPhone (这是|的用途)AndroidMobile的任意数字这两个词之间的字符。

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

if (preg_match("/iPhone|Android.*Mobile/", $user_agent) > 0) {
编辑:哦,忘了提及> 0部分也不需要。 preg_match已经返回0或1,if将其视为布尔值。