-1

而不是这样做

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

curl_exec 的输出被多次编码,有没有一种方法可以只调用一次函数就可以完全解码它?

我刚刚写了这个函数,它工作得很好

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);
}

同样,我还没有对此进行测试,但它在我的脑海中运行良好。:) 这里的想法是,如果您提供的计数为零,则 for 循环将继续运行,直到解码的 URL 与其源相同。

于 2012-06-04T02:02:45.543 回答