我正在使用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);
感谢您的帮助。
答案 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);
?>