如何使用PHP获取仅包含特殊查询字符串的URL?

时间:2019-05-13 08:03:54

标签: php url

例如,我有以下URL地址:

https://www.example.com?id=safety&order=1&price=0..995&property[172]=Canasafe

我可以用这个查询:

$_SERVER['QUERY_STRING']

将输出以下内容

id=safety&order=1&price=0..995&property[172]=Canasafe

是否可以仅使用priceproperty这样的查询? 我想要这个:

?price=0..995&property[172]=Canasafe

3 个答案:

答案 0 :(得分:2)

使用所需索引创建一个数组。使用parse_str()parse_url()的组合从URL中获取所有元素,然后循环这些元素-选择与$fetch_elements数组相交的元素。然后,您只需在该阵列上http_build_query()

$result = [];
$fetch_elements = ['property', 'price'];
$_SERVER['QUERY_STRING'] = 'https://www.example.com?id=safety&order=1&price=0..995&property[172]=Canasafe';

parse_str(parse_url($_SERVER['QUERY_STRING'], PHP_URL_QUERY), $elements);

foreach ($elements as $k=>$e) {
    if (in_array($k, $fetch_elements)) {
         $result[$k] = $e;
    }
}

echo urldecode(http_build_query($result));

答案 1 :(得分:1)

您可以使用正则表达式在preg_match_all()中获取url的目标部分

preg_match_all("/price=[^&]+|property\[172\]=[^&]+/", $query, $m);
echo implode("&", $m[0]);

demo中查看结果

答案 2 :(得分:0)

是的,您可以简单地使用$_REQUEST

因此,您可以使用以下价格来获取价格:

echo $_REQUEST['price'];

示例网址

http://localhost/test.php?id=safety&order=1&price=0..995&property[172]=Canasafe

输出

0..995