2012-06-04 4 views
-1

번 이상 인코딩, 내가 함수에 하나의 호출로 완전히 디코딩 할 수있는 방법은 무엇입니까?

난 그냥이 기능을 쓰고 무슨 자신의 기능을 사용하는 방법에 대해 완벽하게

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

"curl_exec의 출력이 두 번 이상 인코딩되었습니다."--- 누구가? – zerkms

+2

그리고 ... 그런 디코드 함수가 얼마나 자주 urldecode()를 반복하는지 알 수 있습니까? – ghoti

+0

cURL 확장자를 사용하여 웹 페이지를로드하고 curl_exec()가 웹 페이지의 소스를 반환하고 웹 페이지가 인코딩되고 \ u0026, \ u0026amp; 뿐만 아니라 나는 – CLUEL3SS

답변

1

작동? 검증되지 않은

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

이 내 머리 위로 떨어져입니다 ....

UPDATE 코멘트 당 :

나쁜 생각이 전혀! 여기 코드에 있습니다.

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

다시 테스트 해 보았지만 제대로 작동합니다. :) 여기서 아이디어는 0의 카운트를 제공하면 디코딩 된 URL이 소스와 동일 할 때까지 for 루프가 계속 실행된다는 것입니다.

+1

문자열을 디코드 된 문자열과 다른지 확인하기 위해 추가 할 수 있습니다 ... 그리고 같은 때 중지하십시오. –

+1

예,하지만 너무 길어질 수 있습니다. 만약 당신이 원하는 * 문자열이 두번째 마지막 urlencode라면? 우리는 OP에서 더 많은 정보가 필요하다고 생각합니다. – ghoti

+0

+1 for 루프의 혁신적인 사용! – Graham