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

Php SimpleHTMLDom:有没有办法只解析某些代码行?,php,parsing,simple-html-dom,Php,Parsing,Simple Html Dom,我不熟悉使用SimpleHTMLDom。我用它来解析几个url的,并让它按照我想要的方式工作 唯一的问题是加载速度非常慢。我不确定,但我想这是因为我要求解析这么多的url 然而,我确实知道我想要解析的源代码的某个区域 所以我的问题是:有没有办法告诉simpleHtmlDom只解析页面代码上的给定范围,这样它就没有那么多要解析的内容了? Class Standings { public static function Status($url) { require_o

我不熟悉使用SimpleHTMLDom。我用它来解析几个url的,并让它按照我想要的方式工作

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

然而,我确实知道我想要解析的源代码的某个区域

所以我的问题是:有没有办法告诉simpleHtmlDom只解析页面代码上的给定范围,这样它就没有那么多要解析的内容了?

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'/>"; 
        }
    }
}

?>   
班级排名
{
公共静态函数状态($url)
{
只需要一次(“include.all.php”);
require_once('simple_html_dom.php');
//从URL创建DOM对象
$html=file\u get\u html($url);
//使用id属性查找所有
$ret=$html->find('div#cams_view_top');
如果($ret==null)
{
回声“;
}
其他的
{
回声“;
}
}
}
?>   
仅解析某些元素 我不知道是否有办法根据行号只解析代码的某一部分。老实说,我不这么认为,因为这意味着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'/>"; 
    }
}
公共静态函数状态($url)
{
只需要一次(“include.all.php”);
require_once('simple_html_dom.php');
$html=file\u get\u html($url);
$ret=$html->find('div#cams_view_top');
//释放内存以避免内存泄漏
$html->clear();
未结算($html);
如果($ret==null)
{
回声“;
}
其他的
{
回声“;
}
}

Source:

当然可以,只需传递要解析的部分即可。但如果您遇到问题,可能是时候找到更好的html解析器(phpquery)或只使用DomXPath了