Это часть проблемы, с которой Simple_HTML_DOM
... file_get_html()
всегда возвращает действительный объект, независимо от того, произошла ошибка загрузки или нет. Создание вашего собственного экземпляра также не помогает ... Нет никакого реального способа узнать, правильно ли был проанализирован ваш файл.
Что касается выяснения, действительно ли у вас есть <p>
элементов в вашем результате:
$pTags = $html->find('p');
if(empty($pTags)) {
echo 'Cannot find p tag';
} else {
foreach($pTags as $element) {
echo $element;
}
}
В целом, я бы порекомендовал сбросить Simple_HTML_DOM
и перенести ваш код на phpQuery
(с положительной стороны, phpQuery
не выполняет собственный анализ, это просто оболочка PHP-класс DOMDocument). API более упорядочен и позволяет узнать, успешно ли выполнен синтаксический анализ.
try {
$html = phpQuery::newDocument($sourceCode);
$pTags = $html->find('p');
if(empty($pTags)) {
echo 'Cannot find p tag';
} else {
foreach($pTags as $element) {
$element = pq($element); // Wrap raw DOMNode in phpQuery object instance;
echo $element->html();
}
}
} catch(Exception $ex) {
echo $ex->getMessage();
}