2012-07-30 2 views
9

나는 다음과 같은 URL이 있습니다 $url = 'http://mysite.com/?p=welcome&x=1&y=2';그 헤더() (URLDECODE가 작동하지) 작동 있도록 URL에서 &을 디코딩하는 방법

내가 header("Location: $url"); 실제로 작동 그래서 그것을 해독 할 필요가 있습니다. 그래서 브라우저는 실패 http://mysite.com/?p=welcome&x=1&y=2로 리디렉션지고>&와 -가 &를 디코딩 하지을 때문에

그러나 urldecode($url)를 사용하여 작동하지 않습니다. 내가 그렇게 어떻게 http://mysite.com/?p=welcome&x=1&y=2

:

나는 그것이처럼 보이도록 디코딩해야합니까? htmlspecialchars_decode

echo htmlspecialchars_decode('http://mysite.com/?p=welcome&x=1&y=2'); 
//"http://mysite.com/?p=welcome&x=1&y=2" 
+1

위의 내용이 오타가 아닌 경우,'header ("Location : $ url")'- ':'에 유의하십시오. –

+0

@Marc B : 고마워, 대본이 아니라 오타였다. 그냥 위에 고정. – ProgrammerGirl

답변

19

봅니다 (일명 percent-encoding)를 인코딩하지만, HTML 엔티티 URL이 아닙니다. URL로 인코딩하면 %26처럼 보입니다.

html_entity_decode()을 사용하십시오.

+2

추천하고있는'htmlspecialchars_decode'와 다른 사람들이 추천하는'html_entity_decode'의 차이점은 무엇입니까? 어느 것을 사용해야합니까? – ProgrammerGirl

+1

@Programmer'html_entity_decode'는 '←'을'←'로 바꾸는 것과 같은 무거운 가중치 엔티티 디코딩을위한 것입니다. 'htmlspecialchars_decode'는 이스케이프 처리 된 html을 이스케이프 처리하기 위해서만 사용되며, html을 이스케이프하는 데 필요한 문자 만 디코딩합니다. 'htmlspecialchars_decode'는 의미 상으로는 여기에서 사용하는 것이 더 정확합니다. – Esailija

+1

여기에서 예제를 볼 수 있습니다. http://codepad.org/Mv3vtrYZ – Esailija

4

나는이 시도 것 사용이 필요합니다 내가 그렇게 '

$url = html_entity_decode($url); 
header("Location: $url"); 

http://php.net/manual/en/function.html-entity-decode.php

에서 촬영을 야기 할 거라고 당신의 $url URL 인코딩하지만, HTML을, HTML 인코딩되지 않은 특수 문자는 해당 html 엔티티로 바뀝니다.