【问题标题】:How to parse data usin DOM Parser in php and getting empty array如何在php中使用DOM Parser解析数据并获取空数组
【发布时间】:2020-04-04 11:34:33
【问题描述】:

我正在尝试使用 DOM Parser 技术提取一些数据。

我的代码:

<?php
// create new DOMDocument
$document = new \DOMDocument('1.0', 'UTF-8');

// set error level
$internalErrors = libxml_use_internal_errors(true);

$data = '<div id="show">
                        <ul class="browse_in_widget_col">

                                <li>

                                    <a href="accounting/">
                                        Accounting
                                    </a>
                                    <span>

                                (7420)

                                    </span>
                                </li>
                </div>';

$dom = new DOMDocument();
$dom->loadHTML($data, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$xp = new DOMXPath($dom);
$makes = $xp->query('//ul[@class="browse_in_widget_col"]/ul');
$makeList = [];
foreach ( $makes as $make ) {
    $makeList[] = $make->textContent;
}


print_r($makeList);
?>

这里我要拉出元素&lt;a&gt;之间的标签。

这里的示例我需要来自此元素的 Accounting。我该怎么做?

帮助我获取 a 标签中的所有值。现在我得到空数组

【问题讨论】:

标签: php html dom


【解决方案1】:

在您的 XPath 表达式中,您正在寻找一个嵌套的 &lt;ul&gt; 标记,但实际上并没有。如果只需要&lt;a&gt;标签的内容,可以将查询改为//ul[@class="browse_in_widget_col"]//a

$xp = new DOMXPath($dom);
$makes = $xp->query('//ul[@class="browse_in_widget_col"]//a');
$makeList = [];
foreach ( $makes as $make ) {
    $makeList[] = trim($make->textContent);
}

我还在输出中添加了trim() 以删除所有空格。

【讨论】:

  • 不可能是这样,因为这意味着我也没有! :-)
  • 是的,谢谢它的工作。唯一的错误是 //a ?
  • @VirendraSingh 您还需要像 Nigel 那样使用 trim,因为 html textcontent 周围可能有很多空白。
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多