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
:
http
:
/
/www.w3.org
/
TR
/
html4
/
appendix
/
notes.html#h-B.2.2
Příručka
je
tady
:
http
:
/
/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(
)
.