jesper
jesper

Reputation: 227

Magic trick to get the correct url?

I am about to make a system that automaticly puts &pni=something behind an URL. It would be easy if the url just was http://t.co/something.php with "?pni=...." but users can also have http://t.co/something.php?myown=paramater and then the system should add & instead of ?

How can I put the pni parameter behind the URL and to be valid every time? I've tried this without luck.

<?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;
?>

Upvotes: 2

Views: 269

Answers (3)

nvanesch
nvanesch

Reputation: 2600

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

Upvotes: 5

David Barker
David Barker

Reputation: 14620

You can access the query string specifically using

$_SERVER['QUERY_STRING']

If it is empty you can use

$url .= '?arg=val';

If query string is ! empty

$url .= '&arg=val';

Upvotes: 0

jtavares
jtavares

Reputation: 449

check if there is any "?" in the url and concat the pni=something to it accordingly.

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

Upvotes: 0

Related Questions