2012-07-18 4 views
2

PHP의 간단한 HTML 돔 파서로 웹 페이지를 가져 오려고하고 있는데 이상한 문제가 있습니다. 두 문자열을 연결하여 url 변수를 정의합니다.간단한 html dom URL보다 다른 페이지를로드 중

$itemUrl="http://www.example.com/"; 
$pageUrl="default.asp?pg=DispSingleItem&ItemNumber=1234"; 
$itemUrl .=$pageUrl; 
$html=file_get_html($itemUrl); 

이 스크립트를 실행하면 "항목을 찾을 수 없음"이라는 페이지로 이동하게됩니다. 그러나 $ itemUrl을 반향 출력하고 복사하여 브라우저에 붙여 넣으면 직접 찾고있는 페이지로 이동합니다. 또한, 전체 URL을 한 문자열로 저장하여 시작하면 올바른 웹 페이지로 이동합니다.

$itemUrl="http://www.example.com/default.asp?pg=DispSingleItem&ItemNumber=1234"; 
$html=file_get_html($itemUrl); 

연결 문자열에 urlencode를 사용해 보았습니다.하지만 도움이되지 않습니다. 나는 정말로 곤란하다. 같은 URL을 직접 복사하고 다른 변수에 붙여 넣으면 올바른 페이지로 연결되는 링크 된 URL이 다른 페이지로 연결되는 이유를 생각할 수 없습니다. 내가 여기서 무엇을 놓치고 있니? 어떤 도움이라도 좋을 것입니다. 고마워요.

편집 : 문제점을 발견했습니다. $ PAGEURL의 반향이 나타났다 :

default.asp?pg=DispSingleItem&ItemNumber=1234 

실제로 변수는 다음과 같이 보이는 문자열을 저장했다 :

default.asp?pg=DispSingleItem&ItemNumber=1234 

내 브라우저가 자동으로 & A를 번역했다; 단지 &으로, 나는 정확히 내가 필요로하는 것처럼 보였다. 하지만 file_get_html을 실행할 때마다 문자열이 변환되지 않았으므로 스크립트가 & amp 인 URL에서 가져 오려고했습니다. 뿐만 아니라 &. 나는 추가 :

$pageUrl=preg_replace("/amp;/", "", $pageUrl); 

는 사람이 정확히 변수가 무엇인지, 내 문제에 무슨 일이 있었는지처럼 변경하지 않고 출력 브라우저를 얻을 수있는 방법을 알고 있나요? 앞으로 알게되면 유용 할 것입니다.

모든 답변을 주셔서 감사합니다. 나는 그렇게 많이 또는 그렇게 빨리 기대하지 않고 있었다.

+0

'file_get_html'은 무엇입니까? 'file_get_contents'와 같은가요? 또한 브라우저에서 페이지를 볼 때 어떤 쿠키를 보냅니 까? –

+0

@arxanas'file_get_html '이 무엇이든,'michael tyler '가 설명하는 동작을 설명하지 않습니다. 두 경우 모두 동일한 URL이 전달됩니다 (최소한 제공된 코드에 따라). @'michael tyler' : 오류보고 기능이 켜져 있는지 확인하십시오. 내 직감은 원래 코드의 어딘가에있는 변수 이름에 오타가 있다는 것이지 여기에 제시 한 예가 아닙니다. – RobIII

+0

@RobIII 보내진 쿠키 또는 다른 헤더가'file_get_html'의 사용으로 인해 발생할 수 있습니다. –

답변

0

귀하의 마지막 질문이었다 :

는 는

는 사람이 정확히 변수가 무엇인지, 내 문제에 무슨 일이 있었는지처럼 변경하지 않고 출력 브라우저를 얻을 수있는 방법을 알고 있나요? 앞으로 알게되면 유용 할 것입니다. 내가 제대로 이해하면

, 당신은 www.example.com?php=1&e=2www.example.com?p=1&e=2 같은 URL 문자열을 렌더링 브라우저를 방지하는 방법에 대해 알고 싶습니다.

이 방법은 단순히 echo $url; 대신 echo htmlentities($url);을 사용하고 있습니다. 그렇게하면 문자열의 &amp 부분이 정확하게 브라우저에서 렌더링됩니다.

예제 코드 :

<?php 
$url = "www.example.com?p=1&amp;e=2"; 
echo $url; 
echo "<br/>"; 
echo htmlentities($url); 
?> 

결과 브라우저 출력 :

www.example.com?p=1&e=2 
www.example.com?p=1&amp;e=2 
관련 문제