Regex gesucht
Encoder
- php
0 Gunnar Bittersmann0 Steffen0 Encoder
Hallo ihr
Ich möchte per PHP Dateien auslesen, die bestimmte Teile einer Webseite enthalten. Sieht etwa so aus.
Also so
<title>Meine Seite</title>
<style>
h1 { ... }
</style>
und hier Text ohne besondere Auszeichnung ......
Das möchte ich jetzt mit regex so auseinander nehmen dass ich die drei Textteile getrennt bekomme. Problem: die speziell ausgezeichneten Teile sind nicht immer vorhanden. Sonst wäre das hier ok:
preg_match("|<title>(.*)</title>(.*)<style>(.*)</style>(.*)|s", file_get_contents(...), $parts);
Die Reihenfolge bei den ausgezeichneten Teilen ist garantiert. Aber ich krieg da nicht rein dass etwas auch einfach gar nicht vorhanden sein kann.
Hat jemand nen Tip?
@@Encoder:
nuqneH
Hat jemand nen Tip?
Ja: keinen regulären Ausdruck verwenden, sondern einen HTML-Parser.
Qapla'
Hi,
preg_match("|<title>(.*)</title>(.*)<style>(.*)</style>(.*)|s", file_get_contents(...), $parts);
. heißt alles außer \n. Deswegen bietet sich hier z.B. ([\s\S]*) an.
Grüße
Ich hab jetzt dieses hier
preg_match("|(<tag1>(.*)</tag1>)?\s*(<tag2>(.*)</tag2>)?\s* ...tag3 usw.. \s*(.*)|s", $content, $parts);
Dann gehts auch wenn nicht jedes Tag da ist.
. heißt alles außer \n.
Also bei mir packt .* auch Zeilenumbrüche.