Forum und email
urlencode

urlencode

(PHP 3, PHP 4, PHP 5)

urlencode -- URL-kódovat řetězec

Popis

string urlencode ( string str )

Vrátí řetězec, ve kterém byly všechny nealfanumerické znaky kromě -_. nahrazeny znakem procent (%) následovaným dvěma šestnácktovými číslicemi a mezery kódovány jako znaky plus (+). Kódování je stejné jako u dat postovaných z WWW formuláře, tj. stejně jako u application/x-www-form-urlencoded typu. To se liší od RFC1738 kódování (viz rawurlencode()) v tom, že z historických důvodů se mezery kódují jako znaky plus (+). Tato funkce je vhodná při kódování řetězce, který se má použít jako query část URL jako příhodný způsob předání proměnných na další stránku:

Příklad 1. Příklad urlencode()

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

Poznámka: pozor při předávání proměnných, které by mohly odpovídat HTML entitám. Věci jako &amp, &copy a &pound browser analyzuje a místo požadovaného jména proměnné použije odpovídající entitu. To je zřejmý problém, na který W3C upozorňuje už léta. Příručka je tady: https://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP podporuje změnu oddělovače argumentů na středník doporučovaný W3C skrze .ini direktivu arg_separator. Bohužel, většina uživatelských programů neposílá data z formulářů v tomto formátu. Přenositelnější formou je použít jako oddělovač &amp; místo &. Na to nemusíte měnit arg_separator. Nechte ho na &, ale kódujte URL pomocí htmlentities() (urlencode($data)).

Příklad 2. Příklad na urlencode/htmlentities()

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

Viz také urldecode(), htmlentities(), rawurldecode(), rawurlencode().