php preg_match()多种模式

时间:2012-12-17 08:51:45

标签: php preg-match

在多个模式的情况下,可以在相同的数组索引下返回preg_match的结果。我的意思是我有以下preg_match什么是检查不同子字符串('&q''?q''&keywords')上的出现次数。

preg_match('/&q=(.+?)(&|$)|\?q=(.+?)(\&|$)|\&keywords=(.+?)(\&|$)/', urldecode($test_string), $matches); 

我希望$matches[1]下的所有事件都可以排除以下if声明。

if($matches){   
            if ($matches[1] != ''){
              $query_p = mysql_escape_string($matches[1]);      
            } elseif ($matches[3] != ''){   
              $query_p = mysql_escape_string($matches[3]);      
            } elseif($matches[5] != ''){
              $query_p = mysql_escape_string($matches[5]);
            }
         }

1 个答案:

答案 0 :(得分:3)

简化您的正则表达式并将所有非意图捕获组转换为正则表达式中的非捕获组,如下所示:

/[?&](?:q|keywords)=([^&]+)(?:&|$)/

或者使用parse_str函数来解析查询字符串。