0

デコードするPHPの組み込み関数はありますか

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

の中へ

przysięgamsłużyć

4

4 に答える 4

2

urldecode —URLエンコードされた文字列をデコードします

しかし、それはマルチバイト文字列では機能しないと思います。考えられるユーザーランドの回避策については、マニュアルページのコメントを参照してください。また、http://www.zend.com//code/codex.php? ozid = 839&single=1を参照してください。

于 2010-04-01T10:57:00.583 に答える
2

私の推測では、urldecodeとマルチバイト文字に問題があると思います。Urldecodeは8ビット文字のみをデコードでき、文字列にはマルチバイト文字が含まれています。

いくつかの解決策については、 urldecodeのマニュアルページのコメントを確認してください。

于 2010-04-01T11:03:33.047 に答える
2

わかりました、ゴードンとマノス、あなたは両方とも正しいです(そして両方とも間違っています;)

これは通常の「urldecode」ですが、2回適用されます

$a = "przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587";
$b = urldecode(urldecode($a));
var_dump($b);
于 2010-04-01T11:33:34.343 に答える
0

これを試しましたか:

    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))は正しい結果を返します。

于 2010-04-01T11:03:13.980 に答える