SimpleHTMLDom:有没有办法只解析某些代码行?

时间:2014-02-02 15:05:10

标签: php parsing simple-html-dom

我是 SimpleHTMLDom 的新手。我正在用它来解析几个网址并让它以我想要的方式运行。

唯一的问题是加载速度非常慢。我不确定,但我认为是因为我要求解析这么多网址。

但是,我确实知道要解析的源代码的某个区域

所以我的问题是:有没有办法告诉simpleHtmlDom只解析页面代码中的给定范围,所以它没有那么多要解析的东西? < / p>

Class Standings
{
    public static function Status($url)
    {
        require_once("include.all.php");
        require_once('simple_html_dom.php');

        // Create a DOM object from a URL
        $html = file_get_html($url);

        // Find all <div> with the id attribute
        $ret = $html->find('div#cams_view_top');


        if($ret == null)
        {
            echo "<img src='images/offline.fw.png'/>";
        }
        else
        {
            echo "<img src='images/online.fw.png'/>"; 
        }
    }
}

?>   

1 个答案:

答案 0 :(得分:0)

仅解析某些元素

我不知道是否有办法根据行号解析代码的某一部分。我不这么认为,说实话,因为这意味着DOM不完整,因此无法正确解析。

例如,你可以要求它不要解析一些元素。例如,当您看到一个您知道不想解析的元素时。但我不知道该怎么做(尽管有兴趣知道)。

关于你的脚本非常慢的更全面的问题:

已知SimpleHtmlDom有内存泄漏,当迭代解析多个文档时,这通常会有问题。这是由PHP5内存管理本身引起的一个已知错误。

所以,在创建了每个DOM对象之后,你应该释放这样的内存:

public static function Status($url)
{
    require_once("include.all.php");
    require_once('simple_html_dom.php');

    $html = file_get_html($url);
    $ret = $html->find('div#cams_view_top');

    // Free memory to avoid memory leakings
    $html->clear(); 
    unset($html);

    if($ret == null)
    {
        echo "<img src='images/offline.fw.png'/>";
    }
    else
    {
        echo "<img src='images/online.fw.png'/>"; 
    }
}

来源:simpleHtmlDom documentation