使用PHP DOM文档,通过其类选择HTML元素并获取其文本

前端之家收集整理的这篇文章主要介绍了使用PHP DOM文档,通过其类选择HTML元素并获取其文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从div中获取文本,其中class =’review-text’,通过使用具有以下 HTML(相同结构)的 PHP的DOM元素和以下代码.

但是这似乎不起作用

> HTML

  1. $html = '
  2. <div class="page-wrapper">
  3. <section class="page single-review" itemtype="http://schema.org/Review" itemscope="" itemprop="review">
  4. <article class="review clearfix">
  5. <div class="review-content">
  6. <div class="review-text" itemprop="reviewBody">
  7. Outstanding ...
  8. </div>
  9. </div>
  10. </article>
  11. </section>
  12. </div>
  13. ';

> PHP代码

  1. $classname = 'review-text';
  2. $dom = new DOMDocument;
  3. $dom->loadHTML($html);
  4. $xpath = new DOMXPath($dom);
  5. $results = $xpath->query("//*[@class and contains(concat(' ',normalize-space(@class),' '),' $classname ')]");
  6.  
  7. if ($results->length > 0) {
  8. echo $review = $results->item(0)->nodeValue;
  9. }

Blog提供了按类别选择元素的XPATH语法

我已经尝试过StackOverflow,在线教程的许多例子,但没有一个似乎工作.我错过了什么吗?

以下XPath查询将执行您想要的操作.只需将提供给$xpath->查询的参数替换为以下内容
  1. //div[@class="review-text"]

编辑:
为了方便开发,您可以在http://www.xpathtester.com/test测试您的XPath查询在线.

EDIT2:
测试了这段代码;它工作完美.

  1. <?PHP
  2.  
  3. $html = '
  4. <div class="page-wrapper">
  5. <section class="page single-review" itemtype="http://schema.org/Review" itemscope="" itemprop="review">
  6. <article class="review clearfix">
  7. <div class="review-content">
  8. <div class="review-text" itemprop="reviewBody">
  9. Outstanding ...
  10. </div>
  11. </div>
  12. </article>
  13. </section>
  14. </div>
  15. ';
  16.  
  17. $classname = 'review-text';
  18. $dom = new DOMDocument;
  19. $dom->loadHTML($html);
  20. $xpath = new DOMXPath($dom);
  21. $results = $xpath->query("//*[@class='" . $classname . "']");
  22.  
  23. if ($results->length > 0) {
  24. echo $review = $results->item(0)->nodeValue;
  25. }
  26.  
  27. ?>

猜你在找的PHP相关文章