php - SimpleHTMLDom : Call to a member function find() on array

标签 php simple-html-dom

所以我想在大型 html 页面中循环遍历特定的 TD。我正在使用 simplehtmldom 来实现这一目标。问题是如果不把每一步都放在 foreach 中,我就无法让它工作。

这是我的php

include('../inc/simple_html_dom.php');
$html = file_get_html("http://www.bjork-family.com/f43-london-stories");
// I just put the dom of pagebody into TEST
$test =  $html->find('#page-body');
foreach($test->find('img') as $element) 
{
    echo "<img src='" . $element->src . "'/>" . '<br>';
}

我收到这个错误

Fatal error: Call to a member function find() on array in /mywebsite.php on line 39

第39行就是这个

foreach($test->find('img') as $element) 

我尝试了很多不同的东西,如果我保持它真的很简单的话:

// Create DOM from URL or file
$html = file_get_html('http://www.bjork-family.com/f43-london-stories');
foreach($html->find('img') as $element) 
       echo $element->src . '<br>'; 

然后就可以了!

所以当我那样做时它似乎在工作

foreach($html->find('div') as $element) 
    {
        if($element->id == 'page-body')
        {
            echo $element->id;
            echo "EXIST <br>";
        }
        // echo "<img src='" . $element->src . "'/>" . '<br>';
    }

但我不想只使用 foreach 搜索我的 html,有没有另一种方法可以让我到达我的位置然后我循环(我必须在表格中循环 tr )

最佳答案

$test =  $html->find('#page-body');

现在 $test 是一个数组

$test =  $html->find('#page-body', 0);

现在 $test 是一个元素

foreach($test->find('img') as $element) 
{
    echo "<img src='" . $element->src . "'/>" . '<br>';
}

现在就可以了。你也可以简化:

foreach($test->find('#page-body img') as $element) 
{
    echo "<img src='" . $element->src . "'/>" . '<br>';
}

关于php - SimpleHTMLDom : Call to a member function find() on array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889363/

相关文章:

php - <tbody> PHP 简单 HTML DOM 解析器中的故障

php - 如何在 PhpDoc 中指定对象数组

php - Mysql查询没有收到任何数据

php - 我们如何使用简单的 html dom 获取特定链接

php - 如何在 PHP 中获取 DIV 的 HTML 内容

php - 如何检查 SimpleHTMLDom 元素是否不存在

PHP - DOMDocument::saveHTML 创建奇怪的实体

php - 了解匿名函数 PHP

php - 使用 jQuery 和 CodeIgniter PHP MVC 自动完成

javascript - 如何在自动完成 JQuery UI 中获取所选行的 id