[英]Regular expression html table extract using PHP function preg_match_all
我想从包含嵌套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";
任何人都可以使用<tr>
和<td> </table>
告诉我嵌套<table (some table properties)>
某些数据的正则表达式。 如果<tr>
或<td>
字段中存在href,请保持href,并记住所需的表。
例:
$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:
当我尝试下面的代码时,它显示错误:
注意:第27行的C:\\ xampp \\ htdocs \\ testphp \\ tabledata.php中的未定义偏移量:0
码:
$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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.