2013-02-28 5 views
0

Я использую Parser PHPSimpleHTMLDOM, и я хотел бы каким-то образом реализовать цикл foreach с двумя условиями. Я получаю заголовки, которые я хочу, но я также хочу получить href, который относится к этому заголовку. Если я напишу вложенный цикл foreach только для href, он будет чередоваться слишком много раз и выводит много дубликатов. Вот мой код:два условия PHPSimpleHtmlDom в одном цикле foreach

include_once ('simple_html_dom.php'); 
$html = file_get_html('somehtml.com'); 

    foreach ($html->find('ul[class=headlines] li') as $return){ 
    //if I put another foreach here, too many duplicates 
    echo $return; 
    } 

Другой цикл Еогеасп выглядит следующим образом:

foreach ($html->find('ul[class=headlines] li a') as $href){ 
    $link = $href->href; 
    echo $link; 
} 

Как я могу поместить эти два условия в одном цикле Еогеасп поэтому ссылка соответствует правильной статье, и я могу передать его по другому файлу php, чтобы что-то сделать с ним? Заранее спасибо

+0

Просто предложение. Используйте [cURL] (http://php.net/manual/en/book.curl.php) – SilentAssassin

+0

Можете ли вы уточнить? Как мне это сделать? – user2025469

+0

Поиск в google и здесь. Есть много примеров. Я использовал его для извлечения ссылок привязки со страницы. Вы можете проверить [this] (http://stackoverflow.com/questions/3062324/what-is-curl-in-php) для получения дополнительной информации о cURL. Я не даю решения, это просто предложение, как я сказал ранее. – SilentAssassin

ответ

0

Предположим, у вас есть следующий HTML структуру:

<ul class="headlines"> 
    <li><a href="http://google.com">Google</a></li> 
    <li><a href="http://yahoo.com">Yahoo</a></li> 
    <li><a href="http://bing.com">Bing</a></li> 
</ul> 

Тогда вы должны пройти все li пунктов и принести их п-й ребенок, который соответствует a тега (в данном случае это первый один) так:

foreach ($html->find('ul[class=headlines] li') as $return){ 
    $a = $return->children(0); 
    echo 'Link: ' . $a->href . '<br />'; 
    echo 'Headline: ' . $a->plaintext . '<br />'; 
} 

Обратите внимание, что вы можете просто распечатать $a здесь, не извлекая ссылку и заголовок отдельно.

Я предлагаю вам использовать некоторые родные расширения на основе libxml для лучшей производительности, такие как DOM. Вы также можете комбинировать его с XPath, чтобы упростить работу.

+0

Спасибо, отлично работал. – user2025469

Смежные вопросы