How to remove variable from URL

First function is a helper function to remove the query string and rebuild it with http_build_query.

/**
 * Shellcreeper Helper function to remove query string
 *
 * @param $varname        string    variable to remove
 * @param $query_string    string    query data
 * @link https://shellcreeper.com/?p=440
 */
function sc_remove_query_string( $varname, $query_string ) {

    /* make sure it's an array */
    $query_array = array();

    /* Parses the string into variables */
    parse_str( $query_string, $query_array );

    /* Remove */
    unset($query_array[$varname]);

    /* Rebuild the query */
    $query_string = http_build_query($query_array);

    /* return */
    return $query_string;
}

Now this is the function to remove a query variable, from url string:

/**
 * Shellcreeper Remove query variable from url
 *
 * @param $param    string    url parameter to remove
 * @param $page_url    string    url source
 * @uses sc_remove_query_string()
 * @link https://shellcreeper.com/?p=440
 */
function sc_remove_url_var( $param, $page_url ){

    /* parse url data */
    $url_data = array();
    $url_data = parse_url( $page_url );

    /* vars */
    $query_string = '';
    $page_url_new = '';
    $url_data_host = '';
    $url_data_path = '';

    /* remove query string from url */
    if (isset($url_data['query']))
        $query_string = sc_remove_query_string( $param, $url_data['query'] );

    /* new url */
    if ( isset( $url_data['host'] ) )
        $url_data_host = $url_data['host'];
    if ( isset($url_data['path']))
        $url_data_path = $url_data['path'];

    $page_url_new = $url_data_host.$url_data_path;

    /* if there's no string use "?" */
    if ( !empty( $query_string ) ) $page_url_new .= '?' . $query_string;

    /* add things after the hashmark # */
    if (isset($url_data['fragment']))
        $page_url_new .= $url_data['fragment'];

    /* close sesame */
    return $page_url_new;
}

usage example: remove variable var1 from current url:

$current_uri = $_SERVER['REQUEST_URI'];
$clean_uri = sc_remove_url_var( 'var1', $current_uri );
print $clean_uri;

so:

http://domain.com/?var1=value1&var2=value2&var3=value3

will be:

http://domain.com/?var2=value2&var3=value3

Leave a Reply

Your email address will not be published. Required fields are marked *