urlencode

(PHP 4, PHP 5, PHP 7, PHP 8)

urlencodeDizgeye URL kodlaması uygular

Açıklama

urlencode(string$dizge): string

Değişkenleri sonraki sayfaya aktarmak için bir URL'nin parçası olarak bir sorgu dizgesinde kullanılmak üzere bir dizgeyi kodlar.

Bağımsız Değişkenler

dizge

Kodlanacak dizge.

Dönen Değerler

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).

Örnekler

Ö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&amp;bar=Not+the+same+content+as+Data123%21%40-_+%2B">

Notlar

Bilginize:

HTML öğeleri olarak ele alınabilecek değişken isimlerine karşı dikkatli olun. &amp, &copy and &pound 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 &amp; 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.

Ayrıca Bakınız

To Top