Выбор определенного div с веб-страницы extern с помощью CURL

привет может кто-нибудь помочь мне, как выбрать конкретный div из содержимого веб-страницы.

предположим, я хочу получить div с id="wrapper_content" из веб-страницы http://www.test.com/page3.php.

мой текущий код выглядит примерно так: (не работает)

//REG EXP.
$s_searchFor = '@^/.dont know what to put here..@ui';    

//CURL
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://www.test.com/page3.php');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
if(!preg_match($s_searchFor, $ch))
{
  $file_contents = curl_exec($ch);
}
curl_close($ch);

// display file
echo $file_contents;

поэтому я хотел бы знать, как я могу использовать выражения reg для поиска определенного div и как unset остальные веб-страницы, так что $file_content содержит только div.

3 ответов


HTML не является обычным, так что вы не должны использовать regex. Вместо этого я бы порекомендовал парсер HTML, например простой HTML DOM или дом

Если бы вы собирались использовать простой HTML DOM, вы бы сделали что-то вроде следующего:

$html = str_get_html($file_contents);
$elem = $html->find('div[id=wrapper_content]', 0);

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

//wrong
if(!preg_match($s_searchFor, $ch)){
    $file_contents = curl_exec($ch);
}

//right
$file_contents = curl_exec($ch); //get the page contents
preg_match($s_searchFor, $file_contents, $matches); //match the element
$file_contents = $matches[0]; //set the file_contents var to the matched elements

include('simple_html_dom.php');
$html = str_get_html($file_contents);
$elem = $html->find('div[id=wrapper_content]', 0);

скачать simple_html_dom.в PHP


проверьте наш hpricot, он позволяет элегантно выбирать разделы

сначала вы должны использовать curl для получения документа, а затем использовать hpricot, чтобы получить нужную вам часть