解析HTML表 - PHP

时间:2013-12-21 23:47:00

标签: php html html-parsing

我有一个HTML表,我想在PHP中解析以存储到MySQL数据库中。 HTML看起来像这样:

  

<tr><td>DATE</td><td>LOCATION</td><td><a href="URL">NAME</a></td></tr>

我想创建一个以数组形式返回的PHP函数,这些字段是大写字母。有没有人知道任何可以做到这一点的php库,或者我应该使用不同的语言,因为这可能很复杂。我不确切知道如何使用页面上的许多表格来完成此操作,但我正在尝试解析RobotEvents上的VEX事件。我要解析的表从第465行开始。

2 个答案:

答案 0 :(得分:1)

查看PHP HTML DOM Parser库。

要使用,你可以做类似的事情(不是我的例子):

require('simple_html_dom.php');

$table = array();

$html = file_get_html('http://flow935.com/playlist/flowhis.HTM');
foreach($html->find('tr') as $row) {
    $time = $row->find('td',0)->plaintext;
    $artist = $row->find('td',1)->plaintext;
    $title = $row->find('td',2)->plaintext;

    $table[$artist][$title] = true;
}

echo '<pre>';
print_r($table);
echo '</pre>';

有一些关于图书馆的教程,SO问题和有趣的读物。它似乎很受欢迎。

使用上述图书馆在HTML中查找特定表的更新

在众多中找到一个特定的表:

<强> 1。按课程:

在您抓取的HTML的第465行,该表以类catalog-listing开头,所以:

foreach ($html->find('table[@class="catalog-listing"]')->find('tr') as $row) {
   // extract TD data
}

<强> 2。按实例(在HTML中查找第二个表)

foreach ($html->find('table', 2)->find('tr') as $row) {
   // extract TD data
}

答案 1 :(得分:0)

当您准备超越PHP时,Nokogiri(Ruby)和Beautiful Soup(Python)是完善的解析HTML的库。

这并不意味着没有合适的PHP库。