将HTML表解析为多维数组

时间:2011-04-16 08:25:34

标签: php multidimensional-array html-parsing

我想将图像(在表格中)存储在一个多维数组中,根据表格分组及其描述,以便稍后当我调用图像时,我可以显示它们因此。例如,假设我有两个表,一个有三个图像,另一个有一个。

我希望结果数组看起来像:

Array
(
    [0] => Array
        (
            [0] => image1.jpg
            [1] => 1st Variation Description
        )

    [1] => Array
        (
            [0] => image2.jpg
            [1] => image3.jpg
            [2] => image4.jpg
            [3] => 2nd Variation Description
        )

)

编辑感谢您对Simple HTML Dom Parser的建议。这就是我到目前为止所做的,而且我已经达到了一个关于如何将数据存储在我需要的确切结构中的平台。

$html = str_get_html($vartables);   
$varinfo = array();
foreach($html->find('table') as $table){
        $varinfo[] = $table->innertext;
}
print_r($varinfo);

这给了我一些影响:

Array
(
    [0] => 
 <tr>
  <td width=150>
Description1
 </td>

 <td><a href="image1.jpg">
<img src="image1" height=100 border=1></a>
  </td>
 </tr>

    [1] => 
 <tr>
  <td width=150>
Description2
  </td>

<td><a href="image2.jpg">
<img src="image2.jpg" height=200 border=1></a>
  </td>
  <td><a href="image3.jpg">
<img src="image3.jpg" height=200 border=1></a>

  </td>
 <td><a href="image4.jpg">
<img src="image4.jpg" height=200 border=1></a>
  </td>
 </tr>

)

我想删除html,并将.jpg和描述保存在一个多维数组中...不幸的是,我的新闻在那里越来越好,我正在研究但遇到了障碍。

2 个答案:

答案 0 :(得分:2)

在这里发现了类似的问题,并且能够调整答案:how to print cells of a table with simple html dom

与原始结构的唯一区别在于描述是数组中的第一个值而不是最后一个,我认为这更好。

$html = str_get_html($vartables);

$html = str_get_html($vartables);   
$theData = array();

foreach($html->find('table') as $onetable){
foreach($onetable->find('tr') as $row) {

    $rowData = array();
    foreach($row->find('td') as $cell) {
        if(substr_count($cell->innertext,"src")>0){
        foreach($cell->find('img') as $element) {
        $rowData[] = $element->src;
        }
        }else{
        $rowData[] = $cell->innertext;
        }
    }

    $theData[] = $rowData;
}
}

print_r($theData);

输出:

Array
(
    [0] => Array
        (
            [0] => Description1
            [1] => image1.jpg
        )

    [1] => Array
        (
            [0] => Description2
            [1] => image2.jpg
            [2] => image3.jpg
            [3] => image4.jpg
        )

)

答案 1 :(得分:1)

尝试使用phpQuery或其他框架来解析HTML。