CURL

2010-04-01 13 views
8

का उपयोग कर बाहरी वेबपृष्ठ से एक विशिष्ट div का चयन करना हाय कोई भी मुझे वेबपृष्ठ की सामग्री से विशिष्ट div का चयन करने में सहायता कर सकता है।CURL

मान लें कि मैं वेबपृष्ठ http://www.test.com/page3.php से id="wrapper_content" के साथ div प्राप्त करना चाहता हूं। (काम नहीं कर रहा) और कैसे सेट नहीं के बाकी

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

तो मैं पता है कि कैसे मैं reg एक्सप्रेशन का उपयोग कर सकते हैं कि किसी div प्राप्त करना चाहते हैं:

मेरे वर्तमान कोड कुछ इस तरह दिखता वेबपृष्ठ ताकि $file_content में केवल div शामिल हो।

उत्तर

14

HTML isn't regular, इसलिए आपको regex का उपयोग नहीं करना चाहिए। इसके बजाय मैं Simple HTML DOM या DOM

के रूप में एक एचटीएमएल पार्सर इस तरह की सिफारिश करेंगे आप निम्नलिखित की तरह कुछ करना होगा आप सरल HTML डोम का उपयोग करने के लिए जा रहे थे, तो:

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

यहां तक ​​कि अगर आप अभी भी regex अपने कोड wouldn इस्तेमाल किया ' टी सही ढंग से काम नहीं करते हैं। रेगेक्स का उपयोग करने से पहले आपको पृष्ठ की सामग्री प्राप्त करने की आवश्यकता है।

//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() फ़ंक्शन परिभाषित नहीं किया गया है। क्यूं कर? – huykon225

0

हमारे Hpricot जाँच, यह आप की सुविधा देता है सुंदर ढंग से चयन वर्गों

पहले आप कर्ल का प्रयोग करेंगे दस्तावेज़ प्राप्त करने के लिए, तो Hpricot का उपयोग हिस्सा आप की जरूरत

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

डाउनलोड simple_html_dom.php

पाने के लिए