从网址中选择搜索查询

时间:2013-01-08 20:58:57

标签: php regex preg-match

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

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

问题在于,如果有一个以qp结尾的参数,则会包含以下内容:

&cap=queryhere

因为capp结尾,所以它包括那些,我怎么才能只包含来自q和p的搜索查询。谢谢!

2 个答案:

答案 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
)