假设我有以下内容,即当前网址:
http://myurl.com/locations/?s=bricks&style=funky-quirky+rustic&feature=floors-concrete+kitchen+bathroom
如何使用PHP删除除 S
之外的所有参数?换句话说,只需离开:http://myurl.com/locations/?s=bricks
其他参数将始终为样式,类型,功能和区域,并且可能存在部分或全部参数。
谢谢!
答案 0 :(得分:1)
如果您知道s
始终是第一个参数,那么您可以执行以下操作:
$url = "http://myurl.com/locations/?s=bricks&style=funky-quirky+rustic&feature=floors-concrete+kitchen+bathroom";
$split = explode('&',$url);
echo $split[0];
但是,如果参数中s
的位置未知,那么您可以这样做:
$url = "http://myurl.com/locations/?s=bricks&style=funky-quirky+rustic&feature=floors-concrete+kitchen+bathroom";
$split = explode('?',$url);
parse_str($split[1],$params);
echo $split[0].'?s='.$params['s'];
答案 1 :(得分:1)
if ( isset($_GET['s']) && count($_GET) > 1 ) {
header('Location: ?s='. rawurlencode($_GET['s']));
exit;
}
编辑有点安抚Jon。
答案 2 :(得分:1)
错误检查方式不多,但如果保证s
存在,则可以使用:
list($base, $query) = explode('?', $url);
parse_str($query, $vars);
$result = $base.'?s='.rawurlencode($vars['s']);
无论查询字符串中出现s
的位置,它都可以正常工作。我正在用explode
做一个最小的初始“解析”步骤,但是如果感觉不对,你总是可以引入大枪而不是以parse_url
为代价,而不是花费更多冗长。
答案 3 :(得分:1)
你可以通过几种不同的方式实现这一目标。
我将向您展示我使用网址时遇到的最佳标准:
$originUrl = parse_url('http://myurl.com/locations/?s=bricks&style=funky-quirky+rustic&feature=floors-concrete+kitchen+bathroom');
parse_str($originUrl['query'], $queryString);
echo $newUrl = $originUrl['scheme'].'://'.$originUrl['host'].$originUrl['path'].'?s='.$queryString['s'];
祝你好运!
答案 4 :(得分:1)
parse_str(parse_url($url, PHP_URL_QUERY), $query);
$newurl = 'http://myurl.com/locations/?s=' . $query['s'];