(PHP 4, PHP 5, PHP 7)
urlencode — Dizgeye URL kodlaması uygular
$dizge
) : stringDeğ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 1738 kodlamasından farklıdır (rawurlencode() işlevine bakınız).
Örnek 1 - urlencode() örneği
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
Örnek 2 - urlencode() ve htmlentities() örneği
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
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, değiştirge 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, değiştirge 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.