[英]HTML table to php array
- - - - - - - 编辑 - - - - - - - - - - - -
所以我将采用 DOM 方法。 这是我到目前为止所拥有的:
<?php function getdata(){
$contents = file_get_contents('internatdata.htm');
//create a DOM based off of the string from the html table
$DOM = new DOMDocument;
$DOM->loadHTML($contents);
//get all tr and td
$items = $DOM->getElementsByTagName('tr');
$tds = $DOM->getElementsByTagName('td');
function tdrows($elements){
$str = "";
for ($ii =0; $ii < $elements->length; $ii++){
$str .= $elements->item($ii)->nodeValue . ",";
}
return $str;
}
for ($i = 0; $i < $items->length; $i++){
echo tdrows($tds) . "; <br />";
}
}
?>
我遇到的问题是我只想从每个表格行中选择 td。 我试图用嵌套循环来实现这一点。 不幸的是,它在页面上打印每个标签的文本多少次,因为有标签。 我怎样才能得到它,所以它只打印每个 tr 的 td 而不是 dom 上的每个 td?
我需要使用 html 表作为我的数据源,因为我无权访问数据库。 我想能够从 html 表中查询数据我需要创建一个函数来将表转换为数组或多维数组。
我有我认为的基本想法,但我需要一些帮助来完成代码以返回基于 html 表的数组。
另外,如果您有更好的方法来做到这一点,而不是将表转换为数组,那么请告诉我
这是我到目前为止的想法:
<?php
function getdata(){
$contents = file_get_contents('data.htm');
//add delimiters (semicolon for a row and comma for a cell) ???
$stripped = strip_tags($contents);
//explode into an array based off the delimiters above ???
}
?>
我已更新您的编辑以修复它。
function tdrows($elements)
{
$str = "";
foreach ($elements as $element) {
$str .= $element->nodeValue . ", ";
}
return $str;
}
function getdata()
{
$contents = "<table><tr><td>Row 1 Column 1</td><td>Row 1 Column 2</td></tr><tr><td>Row 2 Column 1</td><td>Row 2 Column 2</td></tr></table>";
$DOM = new DOMDocument;
$DOM->loadHTML($contents);
$items = $DOM->getElementsByTagName('tr');
foreach ($items as $node) {
echo tdrows($node->childNodes) . "<br />";
}
}
getdata();
使这更容易的一种方法是使用 dom 解析器http://simplehtmldom.sourceforge.net/ 。
您仍然需要将信息提取到数组中,但这将使逐个迭代元素变得更加容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.