完全解码此字符串的更简单方法


Easier way to fully decode this string?

而不是这样做

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

curl_exec 的输出被编码了不止一次,有没有办法只调用一次函数就可以完全解码它?

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

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

使用自己的函数怎么样?

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 与其源相同。