• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eine List via php curl von externer Seite auslesen/ausgeben

tigtman

Mitglied
Hallo zusammen,

leider habe ich nichts passendes bei Google gefunden und hoffe, dass Ihr mir weiterhelfen könnt.

Ich hole mir via curl den Inhalt einer externen (mit offizieller Genehmigung) Seite, dort wird aber nur der Bereich in <li> bis </li> benötigt.

Das wäre erst einmal der Code dazu:
PHP:
<?php

    function daten_einlesen($webseiten_url, $useragent) {

        $ch = curl_init($webseiten_url);

        curl_setopt ($ch, CURLOPT_URL, $webseiten_url);
        curl_setopt ($ch, CURLOPT_HEADER, 0);

        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt ($ch, CURLOPT_USERAGENT,
            $useragent);

        $result = curl_exec ($ch);
        curl_close ($ch);
        return $result;
    }
    $rueckgabe_der_function =
        daten_einlesen("http://www.externe.url",
        "Mozilla/4.0");
    echo $rueckgabe_der_function;
   
?>

Nur wie kann ich nun nur den Bereich der list auslesen?

Zuvor habe ich es via $host gemacht, was aber vom Hoster nicht unterstützt wird. Jetzt habe ich versucht den Code der 2 Dateien irgendwie mit einander zu "verbinden" --> es glückte mir nicht. :/

ALTE Vorgehensweise:
PHP:
<?php

$host = "http://www.externe.url";
$filestring = file_get_contents($host);
$startpos = 0;
while($pos = strpos($filestring, "<li class", $startpos))
{
    $string = substr($filestring, $pos, strpos($filestring, "</li>", $pos + 1) - $pos);
    // Wenn 'id="thread_title_' in $string ist, gib den Link aus
    if(stristr($string, 'class="item')) {
        echo $string."</br>";
    }
    $startpos = $pos + 1;
}

?>

Also, wie könnte ich nur den Bereich der list innerhalb der curl-Funktion auslesen? Besten Dank.
 
PHP:
$dom = new DOMDocument();
@$dom->loadHTML($result);

foreach($dom->getElementsByTagName('li') as $element) {
      echo $element->nodeValue;
      ...
}

So könnte ein Anfang aussehen, wenn ich mich nicht täusche..
 
Zuletzt bearbeitet:
Netter Tonfall hier.

Er soll das nehmen, womit er besser klar kommt. Es gibt immer mehrere Ansätze. preg_match_all ist schnell und ressourcenschonend und es spielt überhaupt keine Rolle, ob du damit HTML, XML oder was auch immer durchsuchen willst.
 
Er soll das nehmen, womit er besser klar kommt. Es gibt immer mehrere Ansätze. preg_match_all ist schnell und ressourcenschonend und es spielt überhaupt keine Rolle, ob du damit HTML, XML oder was auch immer durchsuchen willst.

Soweit ich weiß, ist das schon richtig das reguläre Ausdrücke schneller sind. Doch wenn ich mich nicht täusche, können reguläre Ausdrücke HTML nicht in allen Fällen
korrekt analysieren. Somit wären wir wieder bei www.php.net/DOMDocument
 
Zurück
Oben