Возможный дубликат:
Как анализировать и обрабатывать HTML с помощью PHP?
Предположим, я хочу извлечь из таблицы определенный номер / текст из таблицы: http://www.fifa.com/associations/association=chn/ranking/gender=m/index.html
Я хочу получить первый номер на правой таблице td
в позиции рейтинга FIFA . Это будет 88 сейчас. При проверке это <td class="c">88</td>
.
Как я могу использовать PHP для извлечения информации с указанной веб-страницы?
edit: Мне сказали JQuery / JavaScript, для этого … лучше подходит
Возможно, это было бы красивее, но это могло бы выглядеть примерно так:
<?php $page = file_get_contents("http://www.fifa.com/associations/association=chn/ranking/gender=m/index.html"); preg_match('/<td class="c">[0-9]*</td>/',$page,$matches); foreach($matches as $match){ echo str_replace(array( "/<td class=\"c\">", "</td>"), "", $match); } ?>
Я никогда не делал ничего подобного раньше с PHP, поэтому он может не работать.
Если вы можете использовать свою магию после загрузки страницы, вы можете использовать JavaScript / JQuery
<script type='text/javascript'> var arr = []; jQuery('table td.c').each( arr[] = jQuery(this).html(); ); return arr; </script>
Кроме того, извините за удаление моего комментария. Вы не были конкретны в отношении того, что нужно было сделать, поэтому я изначально, хотя jQuery лучше соответствовал вашим потребностям, но потом я подумал: «Может быть, вы хотите получить содержимое страницы до загрузки страницы HTML».
Попробуйте http://simplehtmldom.sourceforge.net/ ,
$html = file_get_html('http://www.google.com/'); echo $html->find('div.rankings', 0)->find('table', 0)->find('tr',0)->find('td.c',0)->plaintext;
Это непроверено, просто глядя на источник. Я уверен, что вы сможете настроить его быстрее.
По факту,
echo $html->find('div.rankings', 0)->find('td.c',0)->plaintext;
должно сработать.
Используя DOMDocument
, который должен быть предварительно загружен вашей установкой PHP:
$dom = new DOMDocument(); $dom->loadHTML(file_get_contents("http://www.example.com/file.html")); $xpath = new DOMXPath($dom); $cell = $xpath->query("//td[@class='c']")->item(0); if( $cell) { $number = intval(trim($cell->textContent)); // do stuff }