遍历 html 内容并获取标题和描述 - PHP

Loop through html content and get titles and description - PHP

我正在使用str_get_html($string);

我得到的内容是:

> <div class="detail_sec">   <div class="news_post">   
> <h3>Some title</h3>    <p><span class="date_news">2 Jan
> 2015</span></p>    <p align="justify">Read More :: <a
> href="/news/2015/2-jan.pdf" target="_blank">PDF</a> | <a
> href="/news/2015/2-jan.jpg" target="_blank">JPG</a></p>   </div>
> </div>

<div class="detail_sec">
  <div class="news_post">
   <h3>Another title</h3>
   <p><span class="date_news">1 Jan 2015</span></p>
   <p align="justify">Read More :: <a href="/news/2015/1-jan.pdf" target="_blank">PDF</a> | <a href="/news/2015/2-jan.jpg" target="_blank">JPG</a></p>
  </div>
</div>
.
.
.

我想遍历此内容,并获取 h3、date_news class 和锚标记的数组。 我试过了,它可以工作,但只有 h3(或一次任何其他),我希望全部在一个循环中。

foreach ( $html->find("div[class=news_post] h3") as $h3) {
    $heading = trim($h3)->plaintext;
    $headingArr[]=$heading;
}
var_dump($headingArr);

感谢您的帮助。

您可以在使用选择器时将逗号用作 AND 运算符,就像您在 CSS 中所做的那样。

例如,这将 return 一个包含具有 div 个父项的所有 h3 和具有 div 个父项的所有跨度的数组:

$html->find("div h3, div span");

您尝试做的事情似乎应该在 javascript 中在客户端完成(通常您使用 PHP 生成 HTML,您不处理它)。

但是有很好的理由使用DOM解析,所以如果你确定你需要在PHP中这样做:

<?php 
include_once('simple_html_dom.php');

$string = '<div class="detail_sec"><div class="news_post"><h3>Another title</h3><p><span class="date_news">1 Jan 2015</span></p><p align="justify">Read More :: <a href="/news/2015/1-jan.pdf" target="_blank">PDF</a> | <a href="/news/2015/2-jan.jpg" target="_blank">JPG</a></p></div></div>';
$html=str_get_html($string);
$headingArr = array();

foreach ( $html->find("div[class=news_post] h3, div[class=news_post] span[class=date_news]") as $h3) {
    $heading = trim($h3->plaintext);
    $headingArr[]=$heading;
}
var_dump($headingArr);
?>