【问题标题】:PHP Xpath Help, not able to parse the HTMLPHP Xpath 帮助,无法解析 HTML
【发布时间】:2020-08-30 09:41:45
【问题描述】:

我正在尝试从下面的 TR 代码中获取 2 个值

1) xyz.com 2) 这太好了,我会给 100 美元

以下是我尝试 Xpath/Parse 的 HTML 代码,但无法获得所需的结果。

<tr class="something-is-here">
<td>xyz.com</td>
<td class="text-right">
<span>this is great i will give 100 bucks
</span>
</td>
</tr>

尝试了以下方法,但似乎不起作用。

        $html = new simple_html_dom();
        $html->load($content);
    foreach($html->find('tr') as $myLink) {
        $href = $myLink->span;
if (!is_null($myLink)) {
    foreach ($myLink as $element) {
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
            echo $node->nodeValue. "\n";
        }
    }
}

非常感谢任何帮助。 谢谢。

【问题讨论】:

  • 我没有看到足够的右花括号。您对代码无法正常工作的确切表达不能再模糊/无用了。我们希望查看您生成的错误(如果有)和不正确的输出,如果您(通过基本诊断)缩小了失败的行,请说明。

标签: php dom xpath


【解决方案1】:

一种解决方案可能是:

<?php
$xml = <<<'XML'
<tr class="something-is-here">
<td>xyz.com</td>
<td class="text-right">
<span>this is great i will give 100 bucks</span>
</td>
</tr>
XML;
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath($document);
$elements=$xpath->query('//tr//*[text()[normalize-space()]]');
foreach($elements as $element)
echo $element->nodeValue. "\n";
?>

输出:

xyz.com
this is great i will give 100 bucks

编辑:假设你有 HTML:

$dom = new DomDocument();
$data='<tr class="something-is-here">
<td>xyz.com</td>
<td class="text-right">
<span>this is great i will give 100 bucks
</span>
</td>
</tr>';
$dom->loadHTML($data);
$xpath = new DOMXpath($dom);
$elements=$xpath->query('//tr//*[text()[normalize-space()]]');
foreach($elements as $element)
echo $element->nodeValue. "\n";

【讨论】:

  • 谢谢你,我会试试你的建议。
  • 谢谢,但它不是 XML,它是我试图解析的 HTML 网页。请帮忙。
  • XML、HTML,都可以用 PHP 解析。它也会起作用。我已经编辑了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多