2011-04-16 246 views
2

我想存储在多维数组中的图像(在表中)根据他们的表和他们的描述,以便以后当我调用图像,我可以显示他们相应。例如,假设我有两张桌子,一张有三张图片,另一张有一张。解析HTML表成多维数组

我想结果数组的样子:

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 
     ) 

) 

编辑感谢在简单的HTML DOM解析器的建议。以下是我迄今为止所做的工作,并且就如何将数据存储在我需要的确切结构中而言,我已经达到了一个平台。

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

这给了我一些效果:我想去掉HTML和多维数组保持JPG格式的和说明一起

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> 

) 

...不幸的是我的newbness在那里越来越好,我正在研究,但遇到了障碍。

回答

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 
     ) 

) 
+0

好标记你的问题,因为解决了 – 2011-04-17 10:31:28

1

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

+0

是的,但我不能确定如何实现它们。我编辑了我的帖子,显示了我实际知道如何处理DOM元素来解析HTML的不同事情,但除此之外我没有任何技能。如果有人能告诉我如何,我会非常感激。 – seaofinformation 2011-04-16 09:11:53

+1

http://simplehtmldom.sourceforge.net/的确非常好 – Dormouse 2011-04-16 09:15:37

+0

如果任何人都可以帮助我如何将数据输入到多维数组结构中,那么这就是我遇到的最多问题。 – seaofinformation 2011-04-16 16:17:54