这是我到目前为止所拥有的:
preg_match('/[q|p]=(.*?)&/',$url,$query);
问题是,如果有一个以q
or结尾的参数,p
它将包括那些:
&cap=queryhere
既然cap
以p
它结尾包括那些,我怎么能只包括来自 q 和 p 的搜索查询。谢谢!
这是我到目前为止所拥有的:
preg_match('/[q|p]=(.*?)&/',$url,$query);
问题是,如果有一个以q
or结尾的参数,p
它将包括那些:
&cap=queryhere
既然cap
以p
它结尾包括那些,我怎么能只包括来自 q 和 p 的搜索查询。谢谢!
仅当前面的数字不是单词字符(aZ、0-9 或 _)时,您才能将正则表达式更新为'/\W[q|p]=(.*)&/'
将 \W 添加到前面的匹配项。
就个人而言,我只会使用$_GET['p']
or $_GET['q']
。
<?php
if ( isset($_GET['p']) )
$query = $_GET['p'];
?>
你不需要使用正则表达式,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
)