Encoder: Regex gesucht

Beitrag lesen

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?