PHP loadHTMLFile(table.html)错误

时间:2012-04-30 16:20:44

标签: php domdocument

这是我从旧表中加载数据的脚本,也就是说它是单向的,不可编辑的"。

$document = new DOMDocument();
$document -> loadHTMLFile('http://www.table.html');
$rows   = $document -> getElementsByTagName('tr');

之后我将<td>加载到数组中:

    $numRow = 0;
    foreach($rows as $result){

// 15 columns to load.
        for($i = 0; $i < 15; $i++){
        $array[$numRow][$i] = $result
        ->getElementsByTagName('td')
        ->item($i)
        ->nodeValue;
        }
    $numRow++;
    }

到目前为止一切顺利,但问题就此开始了。所有行都有一个字符串列,用于&#34; description&#34;并且在描述中经常存在人类错误类型错误,例如:

这是一个单元格:<td>Suppor<</td>(有人在这里错误地IDK如何)错误:Tag o invalid

或当细胞含有&#34;&amp;&#34;喜欢这个:

另一个例子:<td>From A&A Limited.</td>错误:htmlParseEntityRef: expecting ';'

此行$document -> loadHTMLFile('http://www.table.html');

总是有错误

正如您所见,该表的15 columns$i = 4字符串列。我不是一个真正的PRO程序员,并没有真正看到这一点。提前感谢任何可以帮助我的人。

3 个答案:

答案 0 :(得分:0)

我认为你不会找到任何修复破坏HTML的神奇方法,但是你可以改变libxml(它支持DOMDocument)稍微处理错误的方式,这样它就能为你提供尽可能多的可用输出。您是否尝试将错误处理更改为内部?查看libxml_use_internal_errors()

答案 1 :(得分:0)

我找到了解决方案:

@$document -> loadHTMLFile('http://www.table.html');
$rows   = $document -> getElementsByTagName('tr');

$nodeListLength = htmlentities($rows->length);
for ($i = 0; $i < $nodeListLength; $i ++)
{
    $node = $gastos->item(0);
    //-> VALORES A MOSTRAR EN TU QUERY
}

我希望它可以帮助另一个有同样问题的人。 感谢那些检查我问题的人。

答案 2 :(得分:0)

尝试在ForEach之前使用bookings