-1

これを行う代わりに

urldecode(urldecode(urldecode(curl_exec($ch))));

curl_exec からの出力が複数回エンコードされています。関数を 1 回呼び出すだけで完全にデコードする方法はありますか?

この関数を書いたばかりで、完全に機能します

function decodeSource($encodedSource){
    while($encodedSource != urldecode($encodedSource)){
        $encodedSource = urldecode($encodedSource);
    }
return $encodedSource;
}
4

1 に答える 1

1

独自の関数を使用するのはどうですか?

function multiurldecode($url, $count=1) {
  for($i=1; $i<=$count; $i++)
    $url=urldecode($url);
  return($url);
}

これは私の頭の上から外れており、テストされていません....

コメントごとに更新:

まったく悪い考えではありません!ここにコードがあります。

function multiurldecode($url, $count=1) {
  if ($count==0) {
    for( $last=urldecode($url); $last!=$url; $url=urldecode($url) )
      $last=$url;
  } else {
    for ($i=1; $i<=$count; $i++)
      $url=urldecode($url);
  }
  return($url);
}

繰り返しますが、私はこれをテストしていませんが、頭の中でうまく動作します。:) ここでの考え方は、ゼロのカウントを指定すると、デコードされた URL がソースと同じになるまで for ループが実行され続けるということです。

于 2012-06-04T02:02:45.543 に答える