簡體   English   中英

PHP:刪除除一個查詢字符串變量外的所有變量

[英]PHP: Remove all but one query string variables

假設我有以下內容,即當前網址:

http://myurl.com/locations/?s=bricks&style=funky-quirky+rustic&feature=floors-concrete+kitchen+bathroom

我如何使用PHP刪除 S 以外的所有參數? 換句話說,只需離開: http://myurl.com/locations/?s=bricks : http://myurl.com/locations/?s=bricks其他參數將始終是Style,Type,Feature和Area,並且可能存在其中一些或全部。

謝謝!

如果您知道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'];
if ( isset($_GET['s']) && count($_GET) > 1 ) {
    header('Location: ?s='. rawurlencode($_GET['s']));
    exit;
}

編輯使喬恩有些安撫。

錯誤檢查的方式不多,但是如果保證s存在,它將起作用:

list($base, $query) = explode('?', $url);
parse_str($query, $vars);
$result = $base.'?s='.rawurlencode($vars['s']);

它也將工作無論在什么位置s出現在查詢字符串。 我正在使用explode進行最小的初始“解析”步驟,但是如果感覺不對,則可以始終使用parse_url並使用parse_url來代替, parse_url很多時間。

您可以通過幾種不同的方式來實現。

我將向您展示使用url所面臨的最佳標准:

$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'];  

祝好運!

parse_str(parse_url($url, PHP_URL_QUERY), $query);
$newurl = 'http://myurl.com/locations/?s=' . $query['s'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM