PHP Function to Create URLs - getLink()
getLink() is a function that will make creating URLs much easier. This function expects two arguments - the first argument is the URL and the second one is an array with all the parameters that should be passed with the URL. The function will combine the existing URL with the parameter array and return the resulting URL.
One important thing to note is that the final URL will use '&
' to separate the parameters instead of just '&
'. This is to ensure valid HTML in the output. If you don't like that, just str_replace()
it out.
If there is extra parameters in the first URL, that will be present in the final URL.
Arguments
- First Argument (
$url
) - The base URL. The parameters will be added to this.
- Second Argument (
$params
) - An associative array containing all the parameters and their values.
- Third Argument (
$use_existing_arguments
) - This is an optional argument. If this is set to 'true', the function will use the parameters that are present in the current page along with the
$params
array when creating the URL.
Example Code
Two Arguments
getLink("http://www.google.com/search",array(
"q"=>"binny",
"hello"=>"world",
"results"=>10)
);
will return
http://www.google.com/search?q=binny&hello=world&results=10
Three Arguments
Assume that the current page is http://www.example.com/index.php?sort_order=name&page=3
getLink("http://www.example.com/edit.php",array(
"item_id" => 15,
"return_url"=> 'index.php'
),
true);
This call will return
http://www.example.com/edit.php?sort_order=name&page=3&item_id=15&return_url=index.php
Code
<?php
/**
* Create a link by joining the given URL and the parameters given as the second argument.
* Arguments : $url - The base url.
* $params - An array containing all the parameters and their values.
* $use_existing_arguments - Use the parameters that are present in the current page
* Return : The new url.
* Example :
* getLink("http://www.google.com/search",array("q"=>"binny","hello"=>"world","results"=>10));
* will return
* http://www.google.com/search?q=binny&hello=world&results=10
*/
function getLink($url,$params=array(),$use_existing_arguments=false) {
if($use_existing_arguments) $params = $params + $_GET;
if(!$params) return $url;
$link = $url;
if(strpos($link,'?') === false) $link .= '?'; //If there is no '?' add one at the end
elseif(!preg_match('/(\?|\&(amp;)?)$/',$link)) $link .= '&'; //If there is no '&' at the END, add one.
$params_arr = array();
foreach($params as $key=>$value) {
if(gettype($value) == 'array') { //Handle array data properly
foreach($value as $val) {
$params_arr[] = $key . '[]=' . urlencode($val);
}
} else {
$params_arr[] = $key . '=' . urlencode($value);
}
}
$link .= implode('&',$params_arr);
return $link;
}