2010-04-01 36 views
8

Xin chào ai cũng có thể giúp tôi cách chọn một div cụ thể từ nội dung của trang web.Chọn một div cụ thể từ một trang web bên ngoài bằng cách sử dụng CURL

Giả sử tôi muốn lấy div với id="wrapper_content" từ trang web http://www.test.com/page3.php.

mã hiện tại của tôi trông giống như thế này: (không hoạt động)

//REG EXP. 
$s_searchFor = '@^/.dont know what to put [email protected]';  

//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; 

Vì vậy, tôi muốn biết làm thế nào tôi có thể sử dụng các biểu reg để tìm một div cụ thể và làm thế nào để unset phần còn lại của trang web để $file_content chỉ chứa div.

Trả lời

14

HTML isn't regular, vì vậy bạn không nên sử dụng regex. Thay vào đó tôi muốn giới thiệu một HTML Parser như Simple HTML DOM hay DOM

Nếu bạn đang đi để sử dụng HTML đơn giản DOM bạn sẽ làm điều gì đó như sau:

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

Thậm chí nếu bạn sử dụng regex mã của bạn vẫn wouldn' t hoạt động chính xác. Bạn cần lấy nội dung của trang trước khi bạn có thể sử dụng 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 
+0

str_get_html() không được xác định. tại sao? – huykon225

0

kiểm tra Hpricot của chúng tôi, nó cho phép bạn thanh lịch chọn phần

đầu tiên bạn sẽ sử dụng curl để có được những tài liệu, sau đó sử dụng Hpricot để có được những phần bạn cần

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

Tải simple_html_dom.php

Hàm
Các vấn đề liên quan