Я хочу извлечь таблицу из HTML-страницы, которая содержит вложенные теги HTML-таблицы, после чего я хочу извлечь <td>
а также <tr>
столов.
Я использую это. Работает нормально для <b>
а также </b>
$file = file_get_contents($url);
preg_match_all ("/<b>(.*)<\/b>/U", $file, $pat_array);
print $pat_array[0][0]." <br> ".$pat_array[0][1]."\n";
Кто-нибудь может сказать мне регулярное выражение для вложенного <table (some table properties)>
некоторые данные с использованием <tr>
а также <td> </table>
, Пожалуйста, сохраните ссылку, если она присутствует в <tr>
или же <td>
поля, и имейте в виду необходимые таблицы.
Пример:
$file = "<html> <head> <title> asdf </title> </head> <body bgcolor = red > <table border = 1> <table bgcolor = white> (some tr and td data > </table> </table></body> </body> </html>"
preg_match_all ("regular expression for table tag", $file, $pat_array);
print $pat_array[0][0]." <br> ".$pat_array[0][1]."\n";
Обновление 1:
Когда я попробовал ниже код, он показывает ошибку:
Примечание: неопределенное смещение: 0 в C: \ xampp \ htdocs \ testphp \ tabledata.php в строке 27
Код:
$file = file_get_contents($url);
$pat_array = Array();
preg_match_all ("/<tr>(.*)<\/tr>/U", $file, $pat_array);
print $pat_array[1][0];
Кто-нибудь может мне помочь с этой ошибкой?
Не пытайтесь анализировать HTML с регулярным выражением, используйте DOMDocument
а также DOMXpath
вместо.
$dom = new DOMDocument();
$dom->loadHtml($file);
$xpath = new DOMXpath($dom);
$tableNodes = $xpath->query('//table'); // select all table nodes
// do something, e.g. print node content
foreach ($tableNodes as $tableNode) {
print $tableNode->nodeValue;
}
Есть намного больше вариантов запроса, которые вы можете выполнить с помощью xpath, посмотри здесь.
Кроме того, вы, вероятно, хотите сделать что-то еще с выбранными узлами, чем просто печать содержимого. Если вы ищете под DOM каждой таблицы, попробуйте это:
foreach ($tableNodes as $tableNode) {
$newDom = new DOMDocument();
$clone = $tableNode->cloneNode(true);
$clone = $newDom->importNode($clone, true);
$newDom->appendChild($clone);
$html = $newDom->saveHTML();
}
Других решений пока нет …