Change the PHP Query String Variable Separator Using php.ini

By  on  

As you probably know, the default PHP query string variable separator is the "&" character. One annoyance with using the "&" character is that, in order to have valid XHTML syntax, you need to output your &'s as "&". If you'd like to avoid all of that mess, you can simply change the separating character to a semi-colon (;). Here's how:

The PHP

//inside the php.ini file
arg_separator.input = ";"

//example URL:  /page.php?key1=value1;key2=value2;key3=value3

There you go -- one easy step to outputting cleaner URLs. Do any of you use this method?

Recent Features

  • By
    Conquering Impostor Syndrome

    Two years ago I documented my struggles with Imposter Syndrome and the response was immense.  I received messages of support and commiseration from new web developers, veteran engineers, and even persons of all experience levels in other professions.  I've even caught myself reading the post...

  • By
    CSS @supports

    Feature detection via JavaScript is a client side best practice and for all the right reasons, but unfortunately that same functionality hasn't been available within CSS.  What we end up doing is repeating the same properties multiple times with each browser prefix.  Yuck.  Another thing we...

Incredible Demos

  • By
    Jack Rugile’s Favorite CodePen Demos

    CodePen is an amazing source of inspiration for code and design. I am blown away every day by the demos users create. As you'll see below, I have an affinity toward things that move. It was difficult to narrow down my favorites, but here they are!

  • By
    CSS Sprites

    The idea of CSS sprites is pretty genius. For those of you who don't know the idea of a sprite, a sprite is basically multiple graphics compiled into one image. The advantages of using sprites are: Fewer images for the browser to download, which means...

Discussion

  1. Personally I set it to & which validates fine.

    and if you don’t have access to the ini file the following works:

    ini_set('arg_separator.output','&');
  2. pretty useful

  3. Didnt know this one, thx ;)

  4. And how Search engines see on this trick?

  5. @wsr: Search engine sees it as the same — you wouldn’t be penalized by this.

  6. @david: Maybe, but standart is “&” and many SE use this symbol to explode and analyze query string…

  7. I think this will break a 3rd party CMS(like wordpress).

  8. Alex

    Think SEO

  9. If you really want to display pretty URLs it’s better to use mod_rewrite.

  10. Keep in mind that XML invalidates the & symbol when it’s located in the href tag.
    To validate your XML you have to supply & EG: href=”?i=1&x=2″
    When using this method the return value in the URI will return as “&”, and if you are using relative URLs in your application navigation, this will invalidate the DOM generated XML in most browsers and stop page load in Google Chrome (Safari).
    Result: href=”/mypage.php?i=1&x=2″

    Returns – EntityRef: expecting ‘;’

  11. To fix the above the first example href=”?i=1&x=2″ should read with &
    like so
    href=”?i=1&x=2″

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!