Bestimmte Bereiche einer HTML Datei auslesen

CyberRon

Grünschnabel
Hallo Zusammen,

ich bräuchte mal euere Hilfe. Ich muss eine HTML Datei mit PHP auslesen. Es gibt bestimmte Bereiche im Dokument die ich benötige...

HTML:
<html>
.
.
.
<body>

<p>irgend ein text...</p>

<h1>Headline</h1>
<p>wieder text...</p>
<h2>Noch eine Headline</h2>
<p>wider text</p>
<hr />

<p>irgend ein text...</p>

<h1>Headline</h1>
<p>wieder text...</p>
<h2>Noch eine Headline</h2>
<p>wider text</p>
<hr />

</body>
</html>

Das Dokument ist relativ lange und beinhaltet noch Tabellen und und und.

So, ich benötige aber immer nur einen bestimmten Abschnitt im Dokument und zwar den ab <h1> bis <hr /> Kann mir jemand helfen wie man so etwas ausliest?

Schonmal vielen Dank...
CR
 
ich machs mit

$inhalt = file_get_contents("http://www.xxx.de");

und die variable kannste dann mit strpos usw durchsuchen
 
Da ich nett bin und preg_match eher kompliziert finde für anfänger hier nochmal ein beispiel wie es aussieht:

PHP:
<?
$tmp = "<html>
.
.
.
<body>

<p>irgend ein text...</p>

<h1>Headline</h1>
<p>wieder text...</p>
<h2>Noch eine Headline</h2>
<p>wider text</p>
<hr />

<p>irgend ein text...</p>

<h1>Headline</h1>
<p>wieder text...</p>
<h2>Noch eine Headline</h2>
<p>wider text</p>
<hr />

</body>
</html>";

$tmp = preg_match_all('%<h1>(.*)</h1>%Uis', $tmp,$found);
foreach ($found[1] as $row){
    echo $row."\n";
}

/**
 * Ausgabe:
 * 
 * Headline
 * Headline
 */
?>

Einlesen ist ja relativ einfach mit dem genannten file_get_contents()
 
vielen dank, das klappt wunderbar. Aber ich glaub ich hab da ein Denkfehler...

Also die HTML Seite hat jede Menge solcher Bloecke immer beginnend mit einem H1 Tag und endet mit einem HR.

HTML:
<h1>Headline 1</h1>
<h2>Noch eine Headline 1</h2>
<p>wieder text...1</p>
<hr />

<h1>Headline 2</h1>
<h2>Noch eine Headline 2</h2>
<p>wieder text... 2</p>
<hr />

Nun moechte ich jeden einzelnen Block von <h1 ... bis ... <hr /> in einer eigenen Variable stehen haben damit ich diese Daten in eine Datenbank speichern kann. Wie das mit dem speichern geht weiss ich, aber ich schaff es nicht die Daten einzeln aus dem HTML Dokument zu ziehen, das es am Ende so ausssieht

$headline_h1 = "Headline 1";
$headline_h2 = "Noch eine Headline 1";
$text_p = "wieder text ...1";

Nun wuerde der INSERT in die DB folgen.

$headline_h1 = "Headline 2";
$headline_h2 = "Noch eine Headline 2";
$text_p = "wieder text ...2";

Wieder ei Update...

Sorry ich kann es nicht besser erklaeren. Das Ganze ist eine private Aktion fuer eine Clanpage, also nichts kommerzielles. Nochmals Danke fuer euere Hilfe.
 
Hatte nicht gelesen das du alle willst..

PHP:
<?
$tmp = "<html>
.
.
.
<body>

<p>irgend ein text...</p>

<h1>Headline</h1>
<p>wieder text...</p>
<h2>Noch eine Headline</h2>
<p>wider text</p>
<hr />

<p>irgend ein text...</p>

<h1>Headline</h1>
<p>wieder text...</p>
<h2>Noch eine Headline</h2>
<p>wider text</p>
<hr />

</body>
</html>";

$tmp = preg_match_all('%<h1>(.*)</h1>.<p>(.*)</p>.<h2>(.*)</h2>.<p>(.*)</p>%Uis', $tmp,$found);
unset($found[0]);
print_r($found);

/**
 * Ausgabe:
Array
(
    [1] => Array
        (
            [0] => Headline
            [1] => Headline
        )

    [2] => Array
        (
            [0] => wieder text...
            [1] => wieder text...
        )

    [3] => Array
        (
            [0] => Noch eine Headline
            [1] => Noch eine Headline
        )

    [4] => Array
        (
            [0] => wider text
            [1] => wider text
        )

)
 */
?>
 
Nach meiner Logik sollte sowas auch mit SimpleXML oder DOM funktionieren, letzendlich is HTML auch nur eine Untermenge von XML.
 
Zurück