Tabelle aus Webseite holen

  • Hallo!


    Ich will zum üben eine Tabelle aus ein Webseite holen und das in ein php datei aufrufen können.
    Beispielwebsite: http://gratisoptehalen.nl/toon.php?rid=16&status=aangeboden
    Ich will dann nur die Tabelle in eine neue Datei angezeigt haben. Ich habe keine anung wie ich das machen kann.
    Hoffe das es klar ist was ich will. Wer kann mich auf dem guten Weg helfen? Entschuldigen Sie mir für mein Deutsch!
    Denke selbst etwas mit file_get_contents und regular expressions aber wie? :?:


    Mfg Piet

  • Dein Ansatz ist schon mal richtig.
    Du holst dir mit file_get_contents den Inhalt der Seite und extrahierst dann mit preg_match die Tabelle.


    Ich hatte mal ne schöne Tutorial-Seite zu regulären Ausdrücken, weiß aber leider die URL nicht mehr, ansonsten mal Google befragen (oder Sarkkan, von dem ich den Link hatte).


    Edit: Grad wiedergefunden: http://regexp-evaluator.de/tutorial/

  • Hallo Danke Ihr beide! Ich komme jetzt mit alle Drei PHP Funktionen nicht weiter! Wer kan mich bitte weiterhelfen mit ein kleines bespiel?
    ich habe hier ein link wo der Tabelle zum üben steht: http://gratisoptehalen.nl/toon.php?rid=16&status=aangeboden


    Die quelletext sieht so aus:



    Nun will ich diese Tabelle(n) aus oben genanten quelletext extrahieren:



    Dan fängt hier mein PHP datei an:



    Wer kann mich bitte auf den Gute Weg weiter helfen?


    Vielen Dank im voraus!


    Piet

  • Nach dem wir uns den Inhalt der Seite geholt haben müssen wir unsere Suchen starten :)
    Hierfür bedienen wir uns unserer strpos()-Funktion und lassen Sie nach dem Anfang einer deiner Tabellen suchen ( <table width="100%" bgcolor="#FFFFFF"> müssten die Objekte deiner Begierde ja sein?).
    Um nun alle Tabellen dynamisch zu finden lassen wir nun unser Skript solange nach dem Anfang der Tabelle Suchen, bis er genau diesen Anfang nicht mehr findet.
    Um eine Endlosschleife zu verhindern (in die Wir geraden würden, wenn wir den Dateizeiegr nicht nach vorne bewegen würden) befüllen wir unsere strpos-Funktionen immer schön mit den Rückgaben "des Gegenenstücks":

    PHP
    <span class="syntaxdefault">$homepage </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> file_get_contents</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'http://gratisoptehalen.nl/toon.php?rid=16&status=aangeboden'</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Hiermit geben wir an, ab welcher Stelle wir mit dem Suchen unseres Tabellen endes beginnen wollen<br />// Unser Skript erhöht diesen Wert gleich automatisch<br /></span><span class="syntaxdefault">$posBegin </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Hier speichern wir die End-Position unserer Tabelle<br /></span><span class="syntaxdefault">$posEnde </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;<br /><br />while(</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$posBegin </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> strpos</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$homepage</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'<table width="100%" bgcolor="#FFFFFF">'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $posEnde</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> false </span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">    $posEnde </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> strpos</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$homepage</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'</table>'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $posBegin</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$posEnde </span><span class="syntaxkeyword">===</span><span class="syntaxdefault"> false</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">        die</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Fehler beim Parsen des Zieldokumentes. Erwartet wurde ein schließen der Tabelle, aber Dateiende erreicht."</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}</span><span class="syntaxdefault"> </span>

    Hiermit müssten wir uns durch den String durcharbeiten können und alle unsere Tabellen finden. Erweitern wirst DU das ganze dann jetzt mal um die Funktion substr( string $string , int $start [, int $length ] ) :wink:
    Ich meine du hast von mir jetzt alles bekommen, was du brauchst um diese Funktion an zu stoßen und ein bisschen denken tut denke ich ganz gut :P


    Gruß
    Dustin


    PS: Diese while-Schleife passt nur auf genau diese Tabellen-Konstellation und nur so lange wie in dieser Tabelle die wir ausfindig machen keine weiteren Tabellen geöffnet werden.

  • Hallo Dustin,


    Vielen Dank für Ihre Antwort! Es tut mir leit, aber ich weisse wirklich nicht wie ich jetzt Anfangen muss mit de Funktion substr(). Ich habe was versucht, aber ich weisse nicht was ich tuhe! Kannst DU mir bitte noch ein bisschen weiter helfen, so das ich das ganze vertehe? :shock:


    Gruss,
    Piet

  • Die Funktion substr() ist wie folgt aufgebaut:

    Zitat

    substr ( string $string , int $start [, int $length ] )

    Die Funktion erwartet als 1. Parameter also erst einmal den String, aus dem wir einen "Substring" haben wollen. Der 2. Parameter ist die Startposition, also da wo die Tabelle Beginnt. Diesen Wert haben wir schon in einer Variabel gespeichert :wink:
    Das nächste ist die Länge, die Errechnen wir uns aus der Position vom Ende der Tabelle weniger die Startposition. Anschließend müssen wir noch die Länge des Endstückes der Tabelle dazu addieren, da wir sonst nur alles bis kurz vor vor dem Ende der Tabelle :)


    So, aber wenn ich dir noch mehr erkläre, sage und so kann ich dir gleich deinen Code schreiben und das werde ich mit 100%iger Sicherheit nicht tun.


    Gruß
    Dustin

  • Hallo Sarkkan,


    Es hat ein bisschen gedauert, aber .... es Funktioniert wunderbar!


    Hier ist mein Beispielcode:



    Danke für Ihre hilfe! :)


    Grüß,
    Piet

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!