– – – – – – – 编辑 – – – – – – – – – – – –
所以我正在使用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,而不是每个td在dom?
我需要使用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 ??? } ?>
解决方法
我已更新您的编辑以修复它.
有关演示,请参阅http://codepad.viper-7.com/Vu5WdK
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();