2013-03-15 64 views
1

我使用简单的HTML DOM来解析HTML页面错误..... 这是我的代码..简单的HTML DOM工作不正常,表现出

include('simple_html_dom.php'); 


$html = file_get_html($my_url); 


foreach($html->find('div') as $ul) { 
    echo $ul; 
    } 

,我也试过很多其他方法。我仍然得到这个错误。 错误:

Call to a member function find() on a non-object 

我与其他标签,以及尝试了......

$html->find('a'); 
    $html->find('h3'); 
    //But still same above error 

谁能plz帮助我出机智的error..Thanks提前

+1

将'include'更改为'require',以便在包含失败时错误输出。只是为了确保实际上正在加载。 – 2013-03-15 04:07:14

+0

另外,未定义'$ my_url'。 – 2013-03-15 04:07:44

+0

我定义它,我只是做了NT在上面的代码...... – 2013-03-15 04:08:37

回答

4

嗯,我找到了解决办法, 解决的办法是: -

The latest version of simple_html_dom has got bugs in it.... So dont use simplehtmldom_1_5 file from sourceforge... Better use simplehtmldom_1_10 from sourceforge it works fine.

错误在simplehtmldom_1_5: -

Url of any site doesnt work here. You can give url of html file , but site url doesnt work It is not identifying ur object $html after reading the url....

希望它可以帮助面临类似问题的人....

+0

这根本不是真的。我一直在使用1.5,它使用网址。由于版本不同以及处理格式错误的html,您可能会得到不同的结果。为此,适当的解决方案是转移到基于libxml的解析器,如phpquery。但是,这是一个不同的问题... – pguardiario 2013-03-15 09:17:30

+0

@pguardiario对我来说,至少1.5力度的工作。并根据我的知识phpQuery有一个较差的文档和支持相比,简单的dom – 2013-03-15 11:08:12

+0

我明白,它不适合你,但不是因为1.5不适用于像你说的网址。相反,因为html格式不正确,并且简单不能可靠地执行基于libxml的解析器所执行的格式不正确的html。 – pguardiario 2013-03-15 11:46:20

0

您正在使用所以你不能像这样使用它。

要么你需要创建vendor(for controller)create helper(for view)

还有一$html已经保留给$html helper

对于供应商的装载

App::import('Vendor', 'HTMLDOM', array('file' => 'HtmlDom' . DS . 'simple_html_dom.php')); 

对于帮手。

App::import('Helper', 'HtmlDom'); 
$NewHtmlDom = new SimpleHtmlDom; 

$fileContent = $NewHtmlDom->file_get_html($my_url); 
+0

我能够包括的文件,我已经尝试过使用简单的PHP和蛋糕bt相同的错误在他们俩 – 2013-03-15 04:21:27

+0

@PavanK,只要你把文件放在正确的目录,并包括正确的,不可能是可能的......也确保函数在simpledom php文件中存在。 – 2013-03-15 04:24:06

+0

是的,我检查和验证了所有,文件都包括在内,并且找到函数也存在.......... – 2013-03-15 04:26:06