2010-04-01 7 views
8

Hallo, kann mir jemand helfen, wie man ein bestimmtes Div aus dem Inhalt einer Webseite auswählt.Auswahl eines bestimmten div von einer externen Webseite mit CURL

Sagen wir, ich möchte das div mit id="wrapper_content" von der Webseite http://www.test.com/page3.php bekommen.

Mein aktueller Code sieht in etwa wie folgt aus: (nicht funktioniert)

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

Also würde ich gerne wissen, wie ich reg Ausdrücke verwenden, kann eine bestimmte div zu finden und wie man ungesetzt der Rest die Webseite, so dass $file_content enthält nur die Div.

Antwort

14

HTML isn't regular, so sollten Sie Regex nicht verwenden. Stattdessen würde ich ein HTML-Parser wie Simple HTML DOM oder DOM

empfehlen Wenn Sie DOM einfache HTML verwenden würden würden Sie so etwas wie das folgende tun:

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

Auch wenn Sie regex Verwendung im Code noch wouldn‘ t funktionieren richtig. Sie müssen den Inhalt der Seite abrufen, bevor Sie Regex verwenden können.

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

Die Funktion str_get_html() ist nicht definiert. Warum? – huykon225

0

unsere hpricot überprüfen, können Sie damit elegant wählen Abschnitte

erste würden Sie curl verwenden, das Dokument zu erhalten, dann hpricot verwenden das Teil Sie

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

Herunterladen simple_html_dom.php

müssen erhalten
Verwandte Themen