而不是这样做
urldecode(urldecode(urldecode(curl_exec($ch))));
curl_exec的输出被编码不止一次,有没有一种方法可以完全解码它,只需要调用一个函数?
我刚刚编写了这个函数,它完美地运行了
function decodeSource($encodedSource){
while($encodedSource != urldecode($encodedSource)){
$encodedSource = urldecode($encodedSource);
}
return $encodedSource;
}
答案 0 :(得分: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与其源相同。