Hallo Felix!
Ich bin dir sehr dankbar.
Mit den regulären Ausdrücken komm ich weniger als schlecht zurecht.
wahrscheinlich könnte man mit ein paar regulären Ausdrücken und preg_replace() den relevanten XHTML-Code isolieren, um ihn dann dem XML-Parser (SimpleXML?) zu füttern.
Mein erster Gedanke war, die komplette XHTML als XML zu übernehmen und die Listen(n) über ihre Klasse anzusprechen. Nur leider hab ich da gar keinen Ansatz denn SimpleXML kommt mit den XHTML-Dokumenten nicht zurecht.
3.) Alle Block-Elemente entfernen, die kein <ol>, <ul> oder <li> sind (aus Deinem Beispiel-Code geht anscheinend hervor, dass <li>-Elemente keine weiteren Block-Elemente enthalten):
Genau genommen enthalten die <li>-Elemente immer ausschließlich Text. Und der ist auch noch sehr kurz. Etwa in der Form "Name, Alter, Geschlecht...".
Reicht es in dem Fall nicht, alle Elemente zu entfernen die nicht <ul> oder <li> sind? Inklusive HTML, Body und Doctype?
Also:
$html = preg_replace('(?s<
(!DOCTYPE|html|body|address|blockquote|del|div|dl|fieldset|form|h1|h2|h3|h4|h5|h6|
hr|ins|noscript|ol|p|pre|table|center|dir|isindex|menu|noframes|
a|abbr|acronym|applet|b|basefont|bdo|big|br|button|cite|code|del|dfn|em| font|i|img|ins|input|iframe|kbd|label|map|object|q|samp|script|select| small|span|strong|sub|sup|textarea|tt|var)
>.*?</\\1>~', '', $html);
Hoffentlich hilft das etwas weiter?
Weiß ich noch nicht. Grad ein bisschen viel input ;)
Danke und Grüße, Matze