2017-02-07 31 views
-1

Этот скриншот показывает, что URL становится хранится в $ URLPHP Почему мой код не входит в цикл foreach в строке 20? В file_get_contents() не кажется, работает

Image

эту скриншотах видно, что после того, как я добавить эхо $ HTML в код, он говорит, что неопределенная переменная $ URL и file_get_contents(): имя файла не может быть пустым

Image2

Кроме того, я попробовал почти все, что там на StackOverflow, включая 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'); 
} 
?> 

Edit:

Если '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

Когда вы обновили страницу, вы убедились, что параметры вашего сообщения перенесены на новый запрос?

Вопрос, кажется, здесь

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

Если $_POST['username'] не установлен, то $url не будет определен. Также удалите @ от @$doc->loadHTML($html);, чтобы вы могли видеть ошибку, которую он выводит. Это поможет вам тренироваться, что не удается после этого.

+0

Кирсти Райт. Да, я убедился, что параметры POST установлены. Я не обновлял страницу. Вместо этого я снова заполнил форму на предыдущей странице, чтобы все параметры POST получили свои значения. И это то, что я получаю после удаления «@». Предупреждение: DOMDocument :: loadHTML(): пустая строка, поставляемая в качестве входа в C: \ xampp \ htdocs \ instaDP \ php \ process.php в строке 12 –