Попытка получить свойство необъекта в C: \ xampp \ htdocs \ tables \ index.php - PullRequest
0 голосов
/ 29 мая 2018

Я использую следующие коды, но я получаю некоторые сообщения об ошибках:

Попытка получить свойство необъекта в C: \ xampp \ htdocs \ tables \ index.php.

У меня есть следующие коды -

<?php
require 'simple_html_dom.php';

$html = file_get_html('http://mkp.gem.gov.in/oem-cartridge/samsung-111s-toner-rst/p-5116877-68482402616-cat.html');

foreach($html->find('div#sellers-table-wrap table tbody tr') as $article) {
    $item['name']   = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0)->plaintext;
    $item['price']  = $article->find('td.offer-price span.variant-final-price span.m-w', 0)->plaintext;
    $articles[] = $item;
}
echo "<pre>";
print_r($articles);

?>

обновление: я тоже пробовал это, но не работает:

    foreach($html->find('div#sellers-table-wrap table tbody tr') as $article) {
  if (count($article->find('td.seller-name div.seller-info span.seller-info-caption')) > 0) {
    $item['name']   = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0)->plaintext;
    $item['price']   = $article->find('td.offer-price span.variant-final-price span.m-w', 0)->plaintext;
  }
    $articles[] = $item;
}
echo "<pre>";
print_r($articles);

1 Ответ

0 голосов
/ 29 мая 2018

Измените селектор в вашем цикле на:

foreach($html->find('div#sellers-table-wrap > table > tbody > tr') as $article) {

Есть другие таблицы, вложенные в эту таблицу, так что вы также просматриваете их строки.Но у них нет элементов, соответствующих селекторам, которые вы используете для назначения $item['name'] и $item['price'], поэтому эти вызовы find() возвращают null, что вызывает ошибки.Этот селектор просто совпадает со строками в таблице верхнего уровня.

Вы также можете добавить проверку:

foreach($html->find('div#sellers-table-wrap > table > tbody > tr') as $article) {
    $item = array();
    $caption = $article->find('td.seller-name div.seller-info span.seller-info-caption', 0);
    $mw = $article->find('td.offer-price span.variant-final-price span.m-w', 0);
    if ($caption && $mw) {
        $item['name'] = $caption->plaintext;
        $item['price'] = $mw->plaintext;
        $articles[] = $item;
    }
}
...