Я очищаю страницу, содержащую таблицу с несколькими tr. Внутри каждого tr есть четыре td, и я хочу получить данные из первого из этих td. Ниже приведен код, который я пробовал до сих пор, но он захватывает все td's. Как я могу выполнить то, что хочу?
... $html = new simple_html_dom(); $html = file_get_html($url); foreach($html->find('table tr') as $row) { foreach($row->find('td', 0) as $cell) { echo $cell; } }
Подумайте, почему вы используете второй foreach
когда на самом деле вы имеете в виду только один элемент в каждой row
.
$html = new simple_html_dom(); $html = file_get_html($url); foreach($html->find('table tr') as $row) { $cell = $row->find('td', 0); echo $cell; }
простой html dom – это дерьмо. Проще использовать встроенные функции dom и xpath:
$dom = new DOMDocument(); @$dom->loadHTMLFile($url); $xpath = new DOMXPath($dom); foreach($xpath->query('//td[1]') as $td){ echo $td->nodeValue; }
Тем не менее, я, вероятно, предпочел бы использовать phpquery