而不是这样做
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 与其源相同。