遍历 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);
?>
我正在使用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);
?>