2017-02-07 7 views
-1

이 스크린 샷을 제대로 동작 나던 file_get_contents()는PHP 내 코드가 20 행의 foreach 루프에 들어 가지 않는 이유는 무엇입니까?

Image

이 스크린 샷 내가 코드에 에코 $의 HTML을 추가 한 후, 그것은 정의되지 않은 변수는 말한다 것을 보여준다 URL이 $ URL에 저장되어지고 있음을 보여줍니다 $ URL과 file_get_contents는() : 파일 이름은

Image2

는 또한, I에 유래 포함 file_get_html()와 컬에있어 거의 모든 시도 비워 둘 수 없습니다. 아무것도 작동하는 것 같습니다. 내가 여기서 어디로 잘못 가고 있는지 말해줘.

<?php 
include_once('simple_html_dom.php'); 
$base_url = "https://www.instagram.com/"; 
$html = ""; 
if (isset($_POST['username'])) { 
    $url = $base_url.htmlspecialchars($_POST['username'])."/";//concatenate $base_url to username to generate full URL 
} 
$html = file_get_contents($url); //access the URL in $url 
$doc = new DOMDocument; 
$doc->loadHTML($html); //get HTML of the webpage given by file_get_contents 
$tags = $doc->getElementsByTagName('img'); 
$arr = (array)$tags; 
if (empty($arr)) { 
    echo 'emptyarray'; 
} 
foreach ($tags as $tag) { 
    echo $tag->getAttribute('src'); 
} 
?> 

편집 : '에 http : // stackoverflow.com/questions는'

경우 대신 사용된다 :() '은 https // www.instagram.com/ its_kushal_here'file_get_contents 잘 작동되지 않고 실패.

+0

if (isset ($ _ POST [ 'username'])) { $ url = $ base_url.htmlspecialchars ($ _ POST [ 'username']). "/"; }'이 부분은 성공하지 못했습니다. 여러분의 게시물이 성공적이지 않았 음을 의미합니다. –

+0

1 - 모든 테스트 코드를 제거하십시오 : 'echo $ url ...'무슨 일이 일어나는지보기가 더 어렵게 만드는 테스트 코드가 많이 있습니다. - 2 - 'simple_dom_html'파일 포함 ------ 3 - codepen (http://codepen.io/)---- 코드 조각을 포함 시키십시오. 4 - 의견을 사용하여 내 모습을 표시하는 것을 고려하십시오 하려고 시도 – Cason

+0

@ MASIDDIQUI 나는 그렇게 생각했다. 그러나 첫 번째 스크린 샷은 POST가 성공적임을 보여줍니다. –

답변

-1

페이지를 새로 고쳤 으면 게시 매개 변수가 새 요청으로 이동했는지 확인 했습니까?

문제는 $_POST['username']은 다음 $url가 정의되지 않습니다 설정되지 않은

if (isset($_POST['username'])) { 
    $url = $base_url.htmlspecialchars($_POST['username'])."/"; 
} 

경우 여기에 보인다. @$doc->loadHTML($html);에서 @도 제거하여 출력되는 오류를 확인할 수 있습니다. 그 후에는 실패한 것을 운동하는 데 도움이됩니다.

+0

Kirsty Wright. 예, POST 매개 변수가 설정되었는지 확인했습니다. 나는 그 페이지를 새롭게하지 않았다. 대신 이전 페이지의 양식을 다시 채워서 모든 POST 매개 변수가 값을 가져옵니다. 그리고 이것은 '@'을 제거한 후 추가로 얻는 것입니다. 경고 : DOMDocument :: loadHTML() : 12 행의 C : \ xampp \ htdocs \ instaDP \ php \ process.php에 빈 문자열이 입력으로 제공되었습니다. –