使用PHP查找所有以“enddate-”开头的类的元素?

时间:2011-04-22 20:24:31

标签: php html parsing

提前感谢您接受我明显的PHP限制。

考虑这个HTML:

<div class="story first enddate-2011-04-21">
  <h3>misc HTML content</h3> 
  ...
</div>

<div class="sparkly enddate-2014-01-01">
  <p>blah blah blah</p> 
  ...
</div> 

如何使用PHP识别HTML文档中所有以“enddate-”开头的类的元素?

为什么我想知道:我想使用PHP(bx它的服务器端)来定位所有这些元素,就像在上面的两个div中一样;然后抓取(并验证)隐含的日期信息,如果今天的日期在结束日期之后,则导致该元素及其内部内容不显示在所提供的网页上(因此,在上面,删除所有的证据)现在是第一个div,但是直到2014年才能看到第二个。)

我找到了一些关于使用PHP HTML解析器查找具有特定ID的元素的建议here on stackoverflow,如:

$doc = new DOMDocument();
$doc->loadHTML($html);
$element = $doc->getElementById('ithis');
$element->parentNode->removeChild($element);
$html = $doc->saveHTML();

可以修改它以查找'enddate'开头的吗?

1 个答案:

答案 0 :(得分:2)

我认为你可以使用XPath做到这一点。

这样的事情应该有效:

$xpath = new DOMXPath($domdocument);
$elements = $xpath->query("//*[contains(@class, 'enddate-')]");

(xpath查询未经测试)