Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从url中选择搜索查询_Php_Regex_Preg Match - Fatal编程技术网

Php 从url中选择搜索查询

Php 从url中选择搜索查询,php,regex,preg-match,Php,Regex,Preg Match,以下是我目前掌握的情况: preg_match('/[q|p]=(.*?)&/',$url,$query); 问题是,如果有一个以q或p结尾的参数,它将包括以下内容: &cap=queryhere 既然cap以p结尾,它就包括了这些,我怎么能只包括来自q和p的搜索查询呢。谢谢 您可以将正则表达式更新为'/\W[q | p]=(.*)&/' 仅当前面的数字不是单词字符(a-Z、0-9或x)时,将\W添加到前面才匹配 就个人而言,我只会使用$\u GET['p']或$\u GET

以下是我目前掌握的情况:

preg_match('/[q|p]=(.*?)&/',$url,$query);
问题是,如果有一个以
q
p
结尾的参数,它将包括以下内容:

&cap=queryhere

既然
cap
p
结尾,它就包括了这些,我怎么能只包括来自q和p的搜索查询呢。谢谢

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

就个人而言,我只会使用
$\u GET['p']
$\u 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);

不适用于
word?q=query
查询是我想要匹配的。谢谢Westy尝试一下$_如果GET不是来自浏览器的URL,则GET不起作用,但他没有指定。如果是的话,我会同意的。
Array
(
    [q] => this is my query
    [a] => 123
)