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