HTML — PHP DOM простой парсер получить значения из тд

У меня возникли некоторые проблемы с использованием простого парсера Dom, я хотел бы получить некоторые значения из таблицы в html-файле, я хочу только значения в td с id = ‘ok’.

Я имею в виду:

<tr>
<td id="no"> 18 </td>
<td id="yes"> 19 </td>
<td id="maybe"> 20 </td>
<td id="ok"> 21 </td>    ---- i only want this value
<tr>

<tr>
<td id="no"> 18 </td>
<td id="yes"> 19 </td>
<td id="maybe"> 20 </td>
<td id="no"> 25 </td>
<tr>

я пытаюсь использовать этот код:

$ret = $html->find('td[id='ok']');

но, похоже, это не работает. У кого-нибудь есть идея?

1

Решение

Должно. Вот другой селектор.
Оба работали на меня.

require_once 'simple_html_dom.php';

$html = file_get_html('test.html');
$elem = $html->find('td#ok', 0);
echo $elem->plaintext;

Примечание: find () возвращает массив, если не указан 2-й параметр (индекс)

1

Другие решения

Еще одно решение (без сторонних парсеров) использовать DOMDocument а также XPATH

$doc = new DOMDocument();
// Making validator to be less strict (bec. invalid XML structure will cause parsing failure)
$doc->strictErrorChecking = false;
// Reading HTML directly in argument (saving one line of code)
$doc->loadHTML( file_get_contents('/some/test.html') );

$xml = simplexml_import_dom($doc);
// Applying XPATH on parsed document
$nodes = $xml->xpath("//*[@id='ok']")
1

По вопросам рекламы [email protected]