(PHP 4, PHP 5, PHP 7, PHP 8)
urlencode — Dizgeye URL kodlaması uygular
Değişkenleri sonraki sayfaya aktarmak için bir URL'nin parçası olarak bir sorgu dizgesinde kullanılmak üzere bir dizgeyi kodlar.
dizge
Kodlanacak dizge.
Belirtilen dizge içindeki karakterlerden, -_.
dışındaki abecesayısal olmayan tüm karakterlerin yüzde (%
) imiyle öncelenmiş iki onaltılık rakamla; boşlukların ise artı (+
) imi ile değiştirildiği bir kodlama uygulanmış bir dizge döndürür. Bir HTML formundan gönderilen veriye de aynı kodlama uygulanır ve bu yolla elde edilen dizgenin biçemi application/x-www-form-urlencoded
ortam türü olarak bilinir. Bu biçem, tarihsel sebeplerle boşlukların artı (+) imi ile kodlanmasıyla » RFC 3986 kodlamasından farklıdır (rawurlencode() işlevine bakınız).
Örnek 1 - urlencode() örneği
<?php
$userinput = 'Data123!@-_ +';
echo "UserInput: $userinput\n";
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
Yukarıdaki örneğin çıktısı:
UserInput: Data123!@-_ + <a href="mycgi?foo=Data123%21%40-_+%2B">
Örnek 2 - urlencode() ve htmlentities() örneği
<?php
$foo = 'Data123!@-_ +';
$bar = "Not the same content as $foo";
echo "foo: $foo\n";
echo "bar: $bar\n";
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
Yukarıdaki örneğin çıktısı:
foo: Data123!@-_ + bar: Not the same content as Data123!@-_ + <a href="mycgi?foo=Data123%21%40-_+%2B&bar=Not+the+same+content+as+Data123%21%40-_+%2B">
Bilginize:
HTML öğeleri olarak ele alınabilecek değişken isimlerine karşı dikkatli olun. &, © and £ gibi şeyler tarayıcı tarafından çözümlenir ve istenen değişken ismi yerine bu HTML öğesi kullanılır. Bu, W3C'nin yıllardır söyleye geldiği zorluklardan biridir. Bakınız: » http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2.
PHP, bağımsız değişken ayracının, W3C'nin önerdiği noktalı virgül olarak değiştirilmesini arg_separator.output php.ini yönergesi üzerinden destekler. Maalesef, çoğu tarayıcı form verisini noktalı virgül ayraçlı biçemde göndermemektedir. Daha taşınabilir bir yol, bağımsız değişken ayracı olarak & yerine & kullanmaktır. Bunu sağlamak için PHP'nin arg_separator.output yönergesinde değişiklik yapmanız gerekmez. Yönergenin değerini & olarak bırakın, fakat URL'lerinizi htmlentities() veya htmlspecialchars() ile kodlayın.