デコードするPHPの組み込み関数はありますか
przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587
の中へ
przysięgamsłużyć
?
urldecode —URLエンコードされた文字列をデコードします
しかし、それはマルチバイト文字列では機能しないと思います。考えられるユーザーランドの回避策については、マニュアルページのコメントを参照してください。また、http://www.zend.com//code/codex.php? ozid = 839&single=1を参照してください。
私の推測では、urldecodeとマルチバイト文字に問題があると思います。Urldecodeは8ビット文字のみをデコードでき、文字列にはマルチバイト文字が含まれています。
いくつかの解決策については、 urldecodeのマニュアルページのコメントを確認してください。
わかりました、ゴードンとマノス、あなたは両方とも正しいです(そして両方とも間違っています;)
これは通常の「urldecode」ですが、2回適用されます
$a = "przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587";
$b = urldecode(urldecode($a));
var_dump($b);
これを試しましたか:
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から取得
編集:最初の文字列がめちゃくちゃです。2回urlencodeしましたか?原因utf8_urldecode(utf8_urldecode($ encode string))は正しい結果を返します。