【问题标题】:PHP Get DIV Contents From DOM Using XpathPHP 使用 Xpath 从 DOM 获取 DIV 内容
【发布时间】:2016-04-05 07:39:20
【问题描述】:

我正在尝试从 DOM 对象中获取 DIV 的内容,我正在使用以下代码。 $url 是一个有效的字符串 url,如果我将它放在浏览器中,它会打开一个包含我要查找的 DIV 的页面。

$url 是一个字符串,例如:

$url = 'http://api.testdev.com/testpage.html';

代码

$dom = new DOMDocument();
$dom->loadHTML($url);
$xpath = new DOMXPath($dom);
$rawData = $xpath->query('//div[contains(@class, \'listing-products\')]');

我试图在下面使用正则表达式//div[contains(@class, \'listing-products\')]定位的HTML代码:

<div class="listing-products right-content">

我只是得到一个如下所示的空数组,日志、屏幕或浏览器控制台中没有错误。

DOMNodeList Object
{
     [length] => 0
}

我怀疑我的正则表达式模式不是 100% 正确,谁能指出我正确的方向?

【问题讨论】:

  • 使用双引号,而不是单引号?
  • @stribizhev,您的示例中只有一个类,div 中有多个类对我不起作用。
  • @stribizhev,想通了,你是对的,代码正在运行,我将字符串传递给loadHTML 函数而不是实际的 HTML。

标签: php regex dom xpath


【解决方案1】:

问题是我在使用 $dom-&gt;loadHTML 时传入的是 URL 字符串而不是函数期望的 HTML,为了解决这个问题,我用 file_get_contents 函数包装了 $url 变量,该函数具有解决了问题。

旧代码:

$dom->loadHTML($url);

新的工作代码:

$dom->loadHTML(file_get_contents($url));

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2013-09-13
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多