0

这是我到目前为止所拥有的:

preg_match('/[q|p]=(.*?)&/',$url,$query);

问题是,如果有一个以qor结尾的参数,p它将包括那些:

&cap=queryhere

既然capp它结尾包括那些,我怎么能只包括来自 q 和 p 的搜索查询。谢谢!

4

2 回答 2

1

仅当前面的数字不是单词字符(aZ、0-9 或 _)时,您才能将正则表达式更新为'/\W[q|p]=(.*)&/' 将 \W 添加到前面的匹配项。

就个人而言,我只会使用$_GET['p']or $_GET['q']

<?php
   if ( isset($_GET['p']) )
      $query = $_GET['p'];
?>
于 2013-01-08T21:11:03.323 回答
1

你不需要使用正则表达式,php已经内置了处理类型信息的函数,它更准确。

<?php

$url = "http://mysite.com/page.php?q=this is my query&a=123";

$query = parse_url($url, PHP_URL_QUERY);

parse_str($query, $opt);

print_r($opt);

输出:

Array
(
    [q] => this is my query
    [a] => 123
)
于 2013-01-08T21:17:47.937 回答