PHP POST Dize Çözme

4 Cevap php

Orada herhangi çözmek için PHP işlevi inşa edilmiştir

przysi% 25C4% 2599gam% 2520S% 25C5% 2582u% 25C5% 25BCy% 25C4% 2587

içine

przysięgam służyć

?

4 Cevap

Tamam, Gordon ve Manos, sen yanlış hem de haklısınız (ve ;)

Bu sadece normal 'urldecode', ancak uygulanan twice

$a = "przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587";
$b = urldecode(urldecode($a));
var_dump($b);

Benim tahminim urldecode ve multibyte karakterler ile ilgili sorunlar olması. Urldecode sadece 8 bit karakterini çözebilir ve dize baytlı karakterler içeriyor.

Bazı çözümler için urldecode manual page comments edin.

urldecode - URL-kodlanmış dize Çözer

Ama o Çokbaytlı dizeleri üzerinde çalışmaz düşünüyorum. Olası userland geçici çözümler için manuel sayfasında yorum ve aynı zamanda http://www.zend.com//code/codex.php?ozid=839&single=1 bakın

Bu denedim:

    function utf8_urldecode($str) {
      $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
      return html_entity_decode($str,null,'UTF-8');;
  }

http://php.net/manual/en/function.urldecode.php alınan

Edit: Sizin ilk dize kadar berbat. Eğer iki kez UrlEncode mi? Çünkü utf8_urldecode (utf8_urldecode ($ kodlanmış bir dize)) doğru sonucu verir.