2015-01-03 2 views
0

Я использую str_get_html($string);Петля через HTML контента и получить заголовки и описание - PHP

Содержания моего Я получаю:

> <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 и anchor tags. Я пробовал это, его работа, но только h3 (или любой другой за раз), я хочу все в одном цикле.

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

Спасибо за любую помощь.

+0

В случае, если не '$ заголовок = подрезать ($ h3) -plaintext;' be '$ heading = trim ($ h3-> plaintext);'? –

+0

есть, опечатка ... избегать – Fahad

+0

do u есть решение? @IsmaelMiguel – Fahad

ответ

1

Вы можете использовать запятую как оператор AND при использовании селекторов, как и в CSS.

Это, например, будет возвращать массив всех h3s с сНом Родителем и все пролеты с Div родителями:

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

То, что вы пытаетесь сделать, кажется, что это должно быть сделано на сторону клиента в JavaScript (как правило, вы создаете HTML с PHP, вы его не обрабатываете).

Но есть веские причины использовать 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); 
?> 
Смежные вопросы