清除搜索过滤器php上的链接

时间:2015-03-06 17:31:02

标签: 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

我想添加“order alphabetic desc”,以便我的网址返回

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

但如果我的查询字符串为空(例如www.mysite.com/),则返回

www.mysite.com/?&q=word

如果查询字符串为空,如何删除&

3 个答案:

答案 0 :(得分:0)

如果您的函数在有查询字符串时运行正常,那么您可以简单地将函数调用放在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;

答案 1 :(得分:0)

更改

if ($pos === false)

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

省略空的$ part字符串(将评估为false)。您还应该初始化$ queryClean

$queryClean = array();

答案 2 :(得分:0)

您可以使用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/en/function.http-build-str.phphttp://php.net/manual/de/function.parse-str.php