Forum und email

urlencode

(PHP 4, PHP 5)

urlencode — URL-codeert een string

Beschrijving

string urlencode ( string $str )

Geeft een string terug waarin alle niet alfanumerieke tekens behalve -_. zijn vervangen door een procent teken (%) gevolgd door twee hexadecimale cijfers en spaties gecodeerd als plus-tekens ((+). Het is gecodeerd op dezelfde manier als de geposte data van een WWW formulier is gecodeerd, dat is dezelfde manier als in het application/x-www-form-urlencoded media type. Dit verschilt van de RFC1738 encoding (zie rawurlencode()) in het feit dat, om historische redenen, spaties zijn gecodeerd als plus (+) tekens. Deze functie is handig als je een string moet coderen die moet worden gebruikt in het query-gedeelte van een URL, als een makkelijke manier om variabelen naar een volgende pagina te zenden.

Example#1 urlencode() voorbeeld

echo '<a href="mycgi?foo=', urlencode($userinput), '">';

Opmerking: let op met variabelen die HTML entities kunnen bevatten. Dingen als &amp, &copy en &pount worden geparsed door de browser. Dit is een omslachtigheid waar de W3C al jaren mensen op wijst. Meer informatie is hier: » https://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2. PHP ondersteunt het veranderen van de argument separator in een punt-komma, zoals het W3C dat aanraadt, met de .ini optie arg_separator. Jammer genoeg zenden de meeste user agents form data niet in een punt-komma gescheiden formaat. Een wijder ondersteunde manier is om &amp; te gebruiken in plaats van & als het scheidingsteken. Het is niet nodig om daarvoor PHP's arg_separator aan te passen. Laat het gewoon op & staan, maar codeer je URLs met htmlentities()(urlencode($data)).

Example#2 urlencode/htmlentities() voorbeeld

echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)), '">';

Zie ook: urldecode(), htmlentities(), rawurldecode(), rawurlencode().