Hallo Felix!
Ich versteh es immernoch nicht ganz.
Wenn mir das:
<(!DOCTYPE|html|...)(?: [^>]*)?>.*?</\1>
den Inhalt von <html> löscht, müsste ich doch mit der selben regexp
<ul class="foo"> </ul> finden können?
also
'~(?s)</?(ul)( class="foo")( [^>]*)?>.*?</\\1>'
oder?
Ich kann dein Vorgehen nicht nachvollziehen.
Wieso soll ich die Tags von inline-Elementen entfernen aber den Inhalt belassen? Inline-Elemente dürfen doch sowieso keine block-Elemente enthalten und können somit komplett weg oder?
Gibt es keine einfach Pattern die sagt "alle <ul class="foo"> dazwischen irgendwas bis zum nächsten </ul> speichern"?
Ich müsste doch nur alles vor dem ersten <ul... löschen, warten bis </ul> kommt, den Teil speichern, schauen ob noch eine <ul... kommt, wenn nicht fertig.
Ich glaub wenn ich den String in einer Schleife zerschneide komm ich schneller ans Ziel oder?
Ich komm auch überhaupt nicht mit den regexp hinterher.
1.) Alle inline-Elemente belassen, aber deren Tags entfernen.
» $html = preg_replace('~(?s)</?(a)( [^>]*)?>~', '', $html);
Das entfernt mir Links z.B. komplett, nicht nur die Tags.?
Dank und Grüße, Matze