循环访问html内容并获取标题和描述 - PHP

时间:2015-01-03 20:05:17

标签: php file-get-contents

我正在使用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类和锚标记的数组。 我试过这个,它的工作但只有h3(或任何其他任何一个),我想要所有的单循环。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

使用选择器时,您可以使用逗号作为AND运算符,就像您在CSS中一样。

例如,这将返回所有h3s的数组,其中div为父级,所有跨度为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);
?>