PHP Zeichenkette aus string extrahieren

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
490
hallo!

ich habe den html-code einer anderen webseite in meinem php code mittels file_get_contents extrahiert.
nun möchte ich mithilfe von preg_match eine zeichenkette zwischen zwei strings "ausschneiden".
in dem html code ist also irgendwo folgende zeichenkette enthalten:

HTML:
<table id="stationPriceList">
bla bla 123
</table>

ich möchte also ledeglich den teil "bla bla 123".
habe es so versucht:

Code:
if (preg_match('/<table id="stationPriceList">([^<]*)<\/table>/', $html, $matches) > 0) {
    echo $matches[1]; //This is text one
}

leider funktioniert das nicht :( preg_match ist unglaublich schwer zu verstehen..
kann mir jemand bitte weiterhelfen?
 
Schnapp dir eine Bibliothek, die dir DOM-Parsing und CSS-artige Selektoren zur Verfügung stellt. simplehtmldom wäre z.B. ne Lösung.
 
hab ich schon versucht, funktioniert aber nicht. soweit ich gelesen habe, weil des html code nicht valide ist oder sowas..
 
Na ja, <table> DARF ja auch als Kind-Element nicht direkt einen String enthalten. Alles muss in Zeilen und Zellen gekapselt sein, optional mit <thead> oder <tbody> drumrum.
Bist du dir sicher, dass dein HTML-Code so abartig falsch ist, wie du oben angegeben hast? Wenn der Tabellen-Code valide ist, dann ist klar warum der Regex nicht funzt... [^<] versauts dir, da <table> eben immer irgendwo ein <tr> und <td> enthalten muss.

Was du als Fehlerquelle ausschließen könntest: nimm mal nicht / als Delimiter, sondern ein anderes erlaubtes Zeichen. HTML-Code enthält nun einmal tendenziell viele /, also spart man sich mit nem Delimiter wie # oder ~ ne Menge Escaping.
 
Zurück
Oben