Php 如何从当前URL中删除最后一个查询
假设我当前的url是Php 如何从当前URL中删除最后一个查询,php,Php,假设我当前的url是 http://domain.com/category/clothing-personal-items/&page=3 我使用$\u服务器[“请求URI”]获取当前请求URI $url = $_SERVER["REQUEST_URI"]; print_r(parse_url($url)); echo parse_url($url, PHP_URL_PATH); 阵列输出 Array ( [path] => /category/clothing-p
http://domain.com/category/clothing-personal-items/&page=3
我使用$\u服务器[“请求URI”]
获取当前请求URI
$url = $_SERVER["REQUEST_URI"];
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
阵列输出
Array
(
[path] => /category/clothing-personal-items/&page=3
)
问题:
如何仅检索/category/sweets personal items/
或删除/category/sweets personal items/
之后的任何查询
$url = explode("?", $url);
$url = array_shift($url); // explode by ? if it is there
$url = explode("&", $url);
$url = array_shift($url); // other wise explode by & and return the first item
然后只需将$new_查询字符串添加到当前的$_服务器['SCRIPT_NAME']是否确定在
page=3
之前没有?
?为什么不以标准的“?”字符开始查询字符串?您只需分解('?',$url)
并获取第一个数组组件。@kampit然后分解('&',$url)
取而代之。@kampit我认为您的路由类中有一个bug。查询字符串必须以?
开头。换句话说,&
之后的所有内容都将被视为URI的一部分,而不是查询。它可能会导致一些问题,包括搜索引擎优化。
$parsed = parse_url($url, PHP_URL_PATH);
if(preg_match('/[^&?]+/',$parsed['path'],$matches))
$path = $matches[0];
else
echo "No path found";
$parsed = parse_url($url, PHP_URL_PATH);
if(preg_match('/[^&?]+/',$parsed['path'],$matches))
$path = $matches[0];
else
echo "No path found";