在php中清理URL

时间:2014-07-15 15:09:24

标签: php url

我需要将一组网址导入数据库,但这些网址中传递了一些变量(Google跟踪代码),我正在尝试自动清理。

网址示例:http://canadaam.ctvnews.ca/health/online-test-for-alzheimer-s-measuring-your-cognitive-health-1.1914180&ct=ga&cd=CAIyAA&usg=AFQjCNFZKDiQeiP0vhyBKcqssn9Zz8Lhqg

所以你可以看到我需要在这里清除任何东西

  

“&安培; CT = GA&安培; CD = CAIyAA&安培; USG = AFQjCNFZKDiQeiP0vhyBKcqssn9Zz8Lhqg”

我确实理解我可以使用str_replace清除它,但这仅在url中的所有代码相似且我们都知道每个URL都有自己的代码时才有效,因此我正在寻找解决方案或任何有关如何使用的指导解决了这个问题。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

只要您不关心任何网址参数,就可以使用explode

e.g。这样的事情应该有效:

$url = "http://canadaam.ctvnews.ca/health/online-test-for-alzheimer-s-measuring-your-cognitive-health-?1.1914180&ct=ga&cd=CAIyAA&usg=AFQjCNFZKDiQeiP0vhyBKcqssn9Zz8Lhqg";

$urlArray = explode("?", $url);

echo $urlArray[0];

答案 1 :(得分:0)

尝试以下

$url = 'http://canadaam.ctvnews.ca/health/online-test-for-alzheimer-s-measuring-your-cognitive-health-1.1914180?ct=ga&cd=CAIyAA&usg=AFQjCNFZKDiQeiP0vhyBKcqssn9Zz8Lhqg';

$parts = parse_url($url);
unset($parts['query']);
echo unparse_url($parts);


function unparse_url($parts_arr) {
   if (strcmp($parts_arr['scheme'], '') != 0) {
     $ret_url = $parts_arr['scheme'] . '://';
   }
   $ret_url .= $parts_arr['user'];
   if (strcmp($parts_arr['pass'], '') != 0) {
     $ret_url .= ':' . $parts_arr['pass'];
   }
   if ((strcmp($parts_arr['user'], '') != 0) || (strcmp($parts_arr['pass'], '') != 0)) {
     $ret_url .= '@';
   }
   $ret_url .= $parts_arr['host'];
   if (strcmp($parts_arr['port'], '') != 0) {
     $ret_url .= ':' . $parts_arr['port'];
   }
   $ret_url .= $parts_arr['path'];
   if (strcmp($parts_arr['query'], '') != 0) {
         $ret_url .= '?' . $parts_arr['query'];
       }
       if (strcmp($parts_arr['fragment'], '') != 0) {
         $ret_url .= '#' . $parts_arr['fragment'];
     }

   return $ret_url;
 }

http://saatske.demon.nl/vanWWW/php/function.parse-url.php

找到的功能