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&amp;hello=world&amp;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 .= '&amp;'//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('&amp;',$params_arr);
    
    return 
$link;

blog comments powered by Disqus
Subscribe to Feed