如何使用preg_match_all获取html标签中的详细信息

时间:2012-05-05 03:10:03

标签: php

我正在使用preg_match_all功能来获取网页上的详细信息。但问题是它返回给定结构的完全匹配。

示例:

<span class="st">Details I want to get</span>

但实际上看起来像是:

<span class="st"><em>Details </em>I want to <b>get<b></span>

所以它只返回一些与上面给出的第一个代码完全匹配的结果!

我发现了一篇关于抓取和放弃的文章。有一个代码,是否可以使用这样的代码执行此操作,因为我发现它使用上述结构?

$nodes = $xPath->query('//span[@class="st"]');
foreach($nodes as $node) {
    echo $node->nodeValue, PHP_EOL;
}

1 个答案:

答案 0 :(得分:0)

使用php DOMDocument和strip_tags

$xml = '<span class="st">Details i want to get</span>';
$dom = new DOMDocument;
$dom->loadXML($xml);
$spans = $dom->getElementsByTagName('span');
foreach ($spans as $span) {
 // you can check class etc with conditional statements
  #strip_tags to remove <em> and other tags inside that tag
  echo strip_tags($span->nodeValue), PHP_EOL;
}