Wenn ich in Firefox (in der Adresszeile) eine URL wie http://www.example.com/?query= eingebe, wird sie automatisch codiert zu http://www.example.com/?query=%D2%F0%E0%EB%E8%E2%E0%EB%E8.
Aber eine URL wie http://www.example.com/#ajax_call?query= wird nicht konvertiert.
Andere Browser wie IE8 konvertieren die Abfrage überhaupt nicht.
Die Frage ist: Wie kann man (in PHP) erkennen, ob die Abfrage codiert ist? Wie decodiert man sie?
Ich habe es versucht:
-
$str = iconv('cp1251', 'utf-8', urldecode($str) );
-
$str = utf8_decode(urldecode($str));
-
$str = (urldecode($str));
-
viele Funktionen von http://php.net/manual/en/function.urldecode.php Nichts funktioniert.
Test:
$str = $_GET['str'];
d('%D2%F0%E0%EB%E8%E2%E0%EB%E8' == urldecode('%D2%F0%E0%EB%E8%E2%E0%EB%E8'));
d('%D2%F0%E0%EB%E8%E2%E0%EB%E8' == $str);
d('' == $str);
d(urldecode($str));
d(utf8_decode(urldecode($str)));
!!! d('%D2%F0%E0%EB%E8%E2%E0%EB%E8' == urlencode($str)); !!!
Rückgabe:
[false] [false] [false] ???? [true]
Eine mögliche Lösung: http://www.example.com// - die Abfrage als Teil der URL senden und mit mod_rewrite parsen.