获取正确网址的魔术技巧?

时间:2013-05-01 13:46:24

标签: php

我即将建立一个自动将&pni=something置于URL后面的系统。如果网址只是 http://t.co/something.php 并且带有“?pni = ....”就很容易,但是用户也可以拥有 http://t.co/something.php?myown=paramater 然后系统应添加&而不是?

如何将pni参数放在URL后面并且每次都有效?我没试过就试过了。

<?php
function nice($in){
  $out = parse_url($in);
  return $out['scheme'] . "://" . $out['host'] . $out['path'] . "?" . $out['query'];
}

$urls = array(
  "http://t.co/something.php?w=23&",
  "http://t.co/something.php?w=23&dfdf=",
  "http://t.co/something.php?",
  "http://t.co/something.php",
  "http://t.co/something",
  "http://t.co/something.php?w=23&dfdf=34&hvem",
);

foreach ( $urls as $url):
  echo print_r(nice($url)) . "<br/>";
endforeach;
?>

3 个答案:

答案 0 :(得分:5)

function nice($in) {
    $out = parse_url($in);
    if ($out['query'] != "") {
        $out['query'] = "pni=something&".$out['query'];
    }
    else { 
      $out['query'] = "pni=something";
    }

    return $out['scheme'] . "://" . $out['host'] . $out['path'] . "?" . $out['query'];
}

答案 1 :(得分:0)

您可以使用

专门访问查询字符串
$_SERVER['QUERY_STRING']

如果为空,您可以使用

$url .= '?arg=val';

如果查询字符串是!空

$url .= '&arg=val';

答案 2 :(得分:0)

检查网址中是否有"?",并相应地将pni=something联接到其中。

function nice($url){
    if(strpos($url,"?")!==false){
        return $url."&pni=something";
    }else{
        return $url."?pni=something";
    }
}