Я думал, что некоторое время назад это работало, но я обнаружил, что оно не всегда работает должным образом, и я пытаюсь разобраться, почему.
$resolver = new URLResolver();
$resolve= $resolver->resolveURL($site);
$resolved = $resolve->getURL();
$parsing = file_get_contents_curl($resolved);
$doc = new DOMDocument();
@$doc->loadHTML($parsing);
$para = $doc->getElementsByTagName('p');
$firstparagraph = $para->item(0)->nodeValue;
echo $firstparagraph;
Я ожидаю, что вышеприведенное вернет содержимое первогоэкземпляр <p>
.Обычно это работает, но не всегда.
Иногда вместо этого я получаю возврат, такой как:
string(5335) "HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=15 Date: Sat, 26 Jan 2019 18:37:18 GMT Server: Apa..........
Этот конкретный вывод возвращается из https://gener8ads.com/referral/?ref=test
Когда я получаю вышеуказанный вывод, я нахожу, еслиЯ изменяю на item(1)
, он корректно возвращает $firstparagraph
.
Мне интересно, почему это происходит, и, возможно, я могу написать правильную проверку, когда это произойдет, чтобы был возвращен правильный первый абзац.Я понимаю, что в этом случае я мог бы просто проверить вывод HTTP / и, если он существует, перейти к item(1)
, но я не знаю, что это решит эту проблему бесконечно.
Так что вопрос в том, чтозаставляя его вернуть это вместо первого <p>
?