2 вопроса о `file_get_html` - PullRequest
       1

2 вопроса о `file_get_html`

1 голос
/ 08 марта 2011

Я хочу использовать simple_html_dom.php для выполнения работы.

$html = file_get_html('http://www.domain.com');
foreach($html->find('p') as $element) {
echo $element;
}

У меня 2 проблемы.

  1. Как добавить судью, если failed to open stream: тогда echo 'this is not a valid url';?
  2. Как сделать судью, если в foreach нет тега p, тогда echo 'Can not find p tag';?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 08 марта 2011

Это часть проблемы, с которой 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();
}
0 голосов
/ 16 апреля 2012
$html = new Simple_html_dom();
$ipaddrss='write your url here';
$html = file_get_html($ipaddrss);
$anchor=$html->find('dd[class=count]');//you can find the tags with its attributes like 
//shown here
if($anchor) {
    echo $anchor;
} else {
    echo "sorry! no tags found";
}
0 голосов
/ 08 марта 2011

попробуйте это:

$html = file_get_html('http://www.domain.com') or die('this is not a valid url');
$p = $html->find('p');
if(count($p) <=0){
   die('Can not find p tag')
}
foreach($p as $element) {
echo $element;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...