2011-08-26 5 views
1

웹 페이지의 HTML 컨텐트를 구문 분석하기 위해 여기에 제안 된 (How do you parse and process HTML/XML in PHP?) PHP lib 간단한 HTML 돔 파서를 사용하고 있습니다. URL 프로토콜 ("http"또는 "https")을 검색하는 방법은 무엇입니까?

는 DOM을 만들려면, 내가해야 할 :

$html = file_get_html('www.example.com'); 

의 URL의 프로토콜을 지정하지 않고, 나는 오류가 발생합니다 :

$html = file_get_html('http://www.example.com/'); 

문제는 내가 할 경우이다.

내 질문은 : 가 어떻게 프로토콜과 함께 URL이 "http://www.example.com/"또는 "https://www.example.com/"손에 가진 유일한 문자열 "www.example.com"있는지 알고받을 수 있나요?

+0

글쎄, 그럴 수 없어. 도메인 이름은 사용 된 프로토콜과는 상당히 독립적입니다. 'ftp : //'또는 좀 더 이국적인 것일 수도 있습니다. (오류에 대해서는'www.example.com'이라는 이름의 로컬 파일을 열려고합니다. 아마도 디스크에 그 파일이 없습니다 :)) – Piskvor

답변

2

나는 가정보다 더 똑똑 뭔가를 알아낼 수 없습니다

if (!$html = file_get_html('http://' . $url)) $html = file_get_html('https://' . $url); 
+0

이것은 완벽하게 작동합니다. 감사! – AntonioJunior

2

둘 모두 유효 할 수 있기 때문에 알 수있는 방법이 없습니다. 나는 http://으로 가정 할 것이지만, HTTP가 필요하다면 http를 https로 리디렉션하고, file_get_html은 HTTP 301 또는 302 리디렉션을 따라야하기 때문입니다. 실패한다면, 시도, "HTTPS를 : //"기본으로하고 "// HTTP를"

1

당신은 get_headers를 사용하려고 할 수있다() http 주소를 찾고 헤더의 Upgrade : 요청을 찾으십시오. 유효한 응답을 받으면 http를 사용하십시오. 그렇지 않으면 https를 시도하십시오.

관련 문제