【发布时间】:2012-01-16 23:01:39
【问题描述】:
-------------编辑------------
所以我将使用 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 ???
}
?>
【问题讨论】:
-
最好的方法是使用 DOM 解析器,例如 php.net/manual/en/book.dom.php
-
“data.htm”是否只包含一个表格及其内容,还是包含更多元素的完整 html 页面?无论如何,您的代码仍然缺少与表格元素解析相关的所有部分。 IMO,我会寻找另一种方法:我不喜欢阅读 html 表格的想法。
-
@jap1968 data.htm 文件只包含我需要使用的html表
-
@jli 你能在上面看到我的编辑并提供任何建议......谢谢
标签: php