Teile einer HTML Datei ausschneiden

exed

Mitglied
Guten Tag

Muss aus einer externen HTML Datei aus dem Body-Tag die kompletten daten auslesen.
Ist ja kein Prblem bisher. Jetzt kommt aber mein Problem. In diesem Body-Tag befinden sich Table-Tags. Ich soll nun aus dieser HTML Datei die Daten auslesen und in ein Array speichern. Wie kann ich das am besten angehen. Ich muss ja auch berügsichtigen das im einem TD-Tag wieder ein Table-Tag ist. Wäre natürlich schlecht wenn ihr mir am Anfgang vom Body-Tag mit dem Table-Tag das splitten beginnt und dann mit einem im TD-Tag vorhanden ende eines Table-Tags wieder den splitt beendet.

Hier nochmal eine Veranschaulichtung meines Problems.

<body>
<table> (beginn des spittes)
<tr>
<td>
<table>
<tr>
<td>foo bar</td>
</tr>
</table> (ende des splittens. stimmt natürlich überhaupt nicht)
</td>
</tr>
</table> (eigentliches ende des Table-Tags)
</body>

Ich hoffe ihr versteht mein Problem.
Habe es mit verschiedenen funktionen versucht um es zu splitten. Habe auch selber eine Funktion geschrieben die mitzählt ob bereits angefangen wurde mit einem Splitt.
Hab es aber alles wieder verworfen.

Brauch unbdingt eure Hilfe.

Mfg
exed
 
Das Problem ist mein Kumpel hat eine Seite in die der Daten einpflegt (Statisch).
Ich soll nun für ihn auf die Datei zugreifen alle Daten rausholen und diese in eine
Datenbank schreiben.
Hätte vielleicht jemand einen Vorschlag?
Vielleicht geh ich das ganze auch falsch an?

Gruß
exed
 
Wie brauchst du die Daten denn im Array?

Rein prinzipiell könntest du einfach alle Tags per [phpf]strip_tags[/phpf] entfernen... übrig bleiben die Daten. Anhand des Zeilenumbruches könntest du sie dann in einen Array überführen.

Wenn du die Daten nach irgendeinem Prinzip im Array anordnen musst, würde sich [phpf]preg_match_all[/phpf] anbieten... wie genau man da verfahren müsste, hängt von dem ab, was du vorhast.
 
HI,

ich hatte das gleiche Problem auch kürzlich und habe es über Kommentare und preg gelöst:

HTML:

Code:
<body>
<!--START-->
<table>
<tr><td>
TEXT
</td></tr>
</table>
<!--ENDE-->
<body>

PHP:


PHP:
$block = "/<!--START-->\s+(.*)\s+<!--ENDE-->/su";
$file = HTMLCODE;			
preg_match_all($block,$file,$matches);			
echo $matches[1][0];

Gruß Pullermann
 
Hi vorab mal danke für eure Hilfe.

Das mit den Kommentaren ist schon super leider kann ich die Seite nicht verändern. Ich soll jediglich die Daten rausfischen.

Zur ordnung der Daten. Es soll im wesentlichen so sein wie in der Tabelle.
Beispiel:

<tr>
<td>Apfel</td>
<td>pro Stück</td>
<td>0,20 Cent</td>
</tr>

in der Datenbank:
Obst: Anzahl: Preis:
Apfel pro Stück 0,20 Cent

Gruß
exed
 
stehen die Daten ausschliesslich in <td>'s...?

Könntest du mal eine komplette Seite posten(oder anhängen)... damit man sieht, was dort noch so alles herumschwirrt.:)
 
Darf die Seite leider nich publik machen.
Sieht aber im wesentlichen so aus.

HTML:
 <table> 
<tr>
<td>
<table>
<tr>
<td>Frucht:</td>
<td>Preis:</td>
</tr>
<tr>
<td>Kirsche:</td>
<td>1kg 1€</td>
</tr>
<tr>
<td>Apfel:</td>
<td>1kg 3€</td>
</tr>
<tr>
<td>Banane:</td>
<td>1kg 1,50€</td>
</tr>
</table>
</td>
</tr>
</table>
 
So z.B.
Code:
preg_match_all('@<td>([^<]*)</td>@si',file_get_contents('http://www.domain.de/datei.htm'),$data);

$data[1] beinhaltet dann die inhalte der Zellen.
 
Danke für die Hilfe
Haben es jetzt so gemacht das wir alles über und unter dem Body-Tag wegschneiden und es dann als XML File behandeln und dann anhand eines XML-Parsers in ein Array schreiben.
Funktioniert hoffentlich.

Gruß
exed
 
Zurück