PHP Использование domdocument для извлечения данных из HTML - PullRequest
0 голосов
/ 17 сентября 2009

У меня есть таблица со следующей структурой. Кажется, я не могу получить данные, которые хочу.

<table class="gsborder" cellspacing="0" cellpadding="2" rules="cols" border="1" id="d00">
    <tr class="gridItem">
        <td>Code</td><td>0adf</td>
    </tr><tr class="AltItem">
        <td>CompanyName</td><td>Some Company</td>
    </tr><tr class="Item">
        <td>Owner</td><td>Jim Jim</td>
    </tr><tr class="AltItem">
        <td>DivisionName</td><td>&nbsp;</td>
    </tr><tr class="Item">
        <td>AddressLine1</td><td>9314 W. SPRING ST.</td>
    </tr>
</table>

Эта таблица, конечно, вложена в другую таблицу на странице. Как я могу использовать DomDocument, например, чтобы ссылаться на «Код» и «0adf» в качестве пары ключ-значение? На самом деле они не обязательно должны быть в паре ключ-значение, но я должен иметь возможность вызывать их каждый в отдельности.

EDIT:

Используя PHP Simple HTML, я смог извлечь нужные данные, используя это:

  $foo = $html->getElementById("d00")->childNodes(1)->childNodes(1);

Проблема в том, что я получаю два тега <td></td> с моими данными. Есть ли способ получить только необработанные данные без тегов?

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

1 Ответ

0 голосов
/ 17 сентября 2009

Если вы не устали использовать DOMDocument, попробуйте использовать PHP Simple HTML DOM Parser . Преимущество этого состоит в том, что вы можете анализировать HTML, который не является допустимым XML, а также предоставлять более удобный интерфейс для анализируемого документа.

Вы можете написать что-то вроде:

$html = str_get_html(...);
foreach($html->find('tr') as $tr) 
{
  print 'First td: ' . $tr->find('td', 0)->plaintext;
  print 'Second td: ' . $tr->find('td', 1)->plaintext;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...