【问题标题】:Regular expression html table extract using PHP function preg_match_all使用 PHP 函数 preg_match_all 提取正则表达式 html 表格
【发布时间】:2014-11-17 07:03:58
【问题描述】:

我想从包含嵌套 html 表格标签的 html 页面中提取表格,然后我想提取 <td><tr>of 表格。

我正在使用这个。 <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";

谁能告诉我嵌套&lt;table (some table properties)&gt; 一些使用&lt;tr&gt;&lt;td&gt; &lt;/table&gt; 的数据的正则表达式。如果&lt;tr&gt;&lt;td&gt; 字段中存在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在&lt;tr&gt;&lt;/tr&gt;之间有换行符;使用 /s (DOTALL) 修饰符会有所帮助。

标签: php html regex html-table extract


【解决方案1】:

不要尝试使用正则表达式解析 HTML,而是使用 DOMDocumentDOMXpath

$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, have a look here 执行更多查询选项。 此外,您可能希望对所选节点执行其他操作,而不仅仅是打印内容。如果您正在寻找每个表的子 DOM,请尝试以下操作:

foreach ($tableNodes as $tableNode) {
    $newDom = new DOMDocument();
    $clone = $tableNode->cloneNode(true);
    $clone = $newDom->importNode($clone, true);
    $newDom->appendChild($clone);

    $html = $newDom->saveHTML();
}

【讨论】:

  • 如何使用这个 cod,是安装任何其他文件还是默认情况下这些设施在 php 中,如果需要安装额外的包,那么如何安装,我使用的是共享主机和 iis 7服务器所以告诉我一个适当的解决方案
  • @santosh 你得到了什么错误?该方法是正确的,您可能有无效的 HTML,这将导致 $dom-&gt;loadHtml(...) 中的错误
  • 你是对的,简单的 html 它可以工作,但是当我随机选择任何工作网站的 html 页面时,它会显示 loadHtml 函数调用问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多