Выбор определенного отделения от веб-страницы экстерна с помощью ЗАВИХРЕНИЯ

Привет может любой помогать мне, как выбрать определенное отделение из содержания веб-страницы.

Скажем, я хочу получить отделение с 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 выражения для нахождения определенного отделения и как сбросить остальную часть веб-страницы так, чтобы $file_content только содержит отделение.

9
задан Paul 1 April 2010 в 09:39
поделиться

2 ответа

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

. Если бы вы собирались использовать Simple 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
15
ответ дан 4 December 2019 в 11:04
поделиться

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

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

{{ 1}}
0
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: