簡體   English   中英

清潔搜索過濾器php上的鏈接

[英]Clean link on search filter php

篩選搜索結果時,我具有清除鏈接的功能

function cleanLink($url,$remove){
  $aQ = explode("&",str_replace("?", "", $url));
  foreach ($aQ as $part) {
    $pos = strpos($part, $remove);
    if ($pos === false)
        $queryClean[] = $part;
  }
  $line = implode("&", $queryClean);
  return "?".$line;
}

$linkACTUAL = "".$_SERVER["QUERY_STRING"];
cleanLink($linkACTUAL, "q=");
echo $linkACTUAL."&q=".$word;

例如,如果我的網址是

www.mysite.com/?q=wordx

我想添加“順序字母降序”,以便我的網址返回

www.mysite.com/?q=wordx&order=desc

但是,如果我的查詢字符串為空(例如www.mysite.com/ ),則返回值為

www.mysite.com/?&q=word

如果查詢字符串為空,如何刪除&

如果在有查詢字符串的情況下函數運行良好,則只需將函數調用放在if語句中,例如

if(!empty($_GET))
{
  $linkACTUAL = "".$_SERVER["QUERY_STRING"];
  cleanLink($linkACTUAL, "q=");
  echo $linkACTUAL."&q=".$word;
}

更新:

 echo  (false === strpos($linkACTUAL, "&"))  ? $linkACTUAL."q=".$word : $linkACTUAL."&q=".$word;

更改

if ($pos === false)

 if ($pos === false && $part)

省略空的$ part字符串(將評估為false)。 您還應該初始化$ queryClean

$queryClean = array();

您可以使用parse_str和http_build_str從查詢字符串中刪除參數。 您只需要確保已安裝pecl_http> = 0.23.0

function cleanLink($queryString, $remove)
{
    parse_str($queryString, $query);
    if (array_key_exists($remove, $query)) {
        unset($query[$remove]);
    }

    return http_build_str($query);
}

$linkACTUAL = $_SERVER["QUERY_STRING"];

cleanLink($linkACTUAL, "q");
echo $linkACTUAL . "&q=" . $word;

有關更多信息,請參見http://php.net/manual/zh/function.http-build-str.phphttp://php.net/manual/de/function.parse-str.php

暫無
暫無

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

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