【问题标题】:parsing html using DOM使用 DOM 解析 html
【发布时间】:2013-02-15 15:21:08
【问题描述】:

我想从提供的特定 url 解析 HTML 数据。但我无法解析数据,因为我遇到的错误很少。

这是我的代码:-

    $html = new DOMDocument();
    $html->loadHTML($url);  //$url is where the site url is defined
    $value = array();
    foreach($html->find($identifier) as $element) //$identifier is where div, a etc is stored
    {
        $value[] = $element->src."<br />";
    }
    print_r($value);

我收到以下错误

Call to undefined method DOMDocument::find()    

谁能帮我解决这个问题。我使用的是 cake-php 2.0

【问题讨论】:

  • identifier的具体例子是什么?
  • 例如我取$identifier = div

标签: php html dom


【解决方案1】:

据我所知,蛋糕 php 文档...... domDocument 类没有 find() 函数。

使用xml类的toArray()方法documented here怎么样

【讨论】:

    【解决方案2】:

    如何阅读有关您正在使用的课程的文档? DOMDocument 在 php.net 网站上有很好的记录,并且没有提到 find 方法,你为什么会认为它有呢?

    DOMDocument 有很多任何JavaScript 开发人员都熟悉的方法,例如getElementsByTagNamegetElementById,这应该是您正在寻找的。​​p>

    此外,如果您从 URL 加载 HTML,DOMDocument::loadHTML 方法将不起作用,因为它需要一个包含有效 HTML 的字符串,而不是 URI。

    DOMDocument::loadHTMLFile 可能与 URL 参数一起使用(不能确定,这台计算机上没有安装 PHP 来检查),但如果没有,您可以结合 DOMDocument::loadHTMLfile_get_contents 来获取它可以工作。

    【讨论】:

      【解决方案3】:

      如错误所示,DOMDocument 没有 find 方法。不过,它确实有很多非常不错的 DOM 解析方法:http://www.php.net/manual/en/class.domdocument.php

      如果$identifier 是一个元素名称,那么使用它是有意义的

      foreach ($html->getElementsByTagName($identifier) as $element) {
          $value[] = $element->nodeValue + "<br>";
      }
      

      【讨论】:

        【解决方案4】:

        这不起作用:

        $html->loadHTML($url);
        

        LoadHTML 加载一个字符串,例如:

        $html->loadHTML("<html><body>Test<br></body></html>");
        

        尝试使用 loadHTMLfile:

        $html->loadHTMLFile("filename.html");
        

        见:http://www.php.net/manual/en/domdocument.loadhtmlfile.php

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-03
          • 2015-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多