Hallo in die Runde,
nach langem brauch ich nun doch eure Hilfe bei einem Regex.
Ich möchte in einem HTML-Template unsauberes HTML bereinigen.
Natürlich hab ich mich vorab in Google und vielen Foren informiert und anscheinend sei TIDY oder beautiful soup hierfür das beste.
Leider kann ich diese nicht auf dem Webserver installieren da Managed.
Gefunden habe ich dann zumindst eine PHP Klasse ==> HTML fixer | Barattalo
Oder online welches auch mit Regex arbeitet ==> HTML FIXER - FIXER (echt super)
dieser funktioniert schon ganz gut allerdings schwächelt er bei nicht geschlossenen <li> Tags diese schließt er immer ganz am Ende beim </ul>
Deswegen wollte ich das nun selbst mit einem preg_match/preg_replace angehen.
Hier ein Beispiel HTML bei dem die offenen <li> geschlossen werden sollen:
Hier mein Regex Versuch:
Der RegExp-Evaluator - RegExp-Evaluator - Ergebnis
Erklärung:
(<li>)(.+?)(?!</li>)(<li>)
==> (?!</li>) ist ein versuch mit Assertions das diese Zeichenkette nicht drin vorkommen kann
Bisher gibt er mir komischerweise immer Aufzählung 1,3 zurück.
Vielleicht könnt ihr mir hier helfen.
Perfekt wäre natürlich dann mit preg_replace ==> $1 $2 </li>$4
die offenen tags automatische schließen zu lassen, wobei ich wahrscheinlich hier dann mit preg_match_all und einer schleife arbeiten muss oder?
Beste Grüße
RegEx Noob
nach langem brauch ich nun doch eure Hilfe bei einem Regex.
Ich möchte in einem HTML-Template unsauberes HTML bereinigen.
Natürlich hab ich mich vorab in Google und vielen Foren informiert und anscheinend sei TIDY oder beautiful soup hierfür das beste.
Leider kann ich diese nicht auf dem Webserver installieren da Managed.
Gefunden habe ich dann zumindst eine PHP Klasse ==> HTML fixer | Barattalo
Oder online welches auch mit Regex arbeitet ==> HTML FIXER - FIXER (echt super)
dieser funktioniert schon ganz gut allerdings schwächelt er bei nicht geschlossenen <li> Tags diese schließt er immer ganz am Ende beim </ul>
Deswegen wollte ich das nun selbst mit einem preg_match/preg_replace angehen.
Hier ein Beispiel HTML bei dem die offenen <li> geschlossen werden sollen:
Code:
<UL> <LI><STRONG>1 Gewicht: 295 g</STRONG> </li> <LI><STRONG>2 Obermaterial aus Airmesh</STRONG>verbessert <LI><STRONG>3 dsfsdfds dsfsdfsd</STRONG> <LI><STRONG>4 Obermaterial aus Airmesh</STRONG>verbessert </ul>
Der RegExp-Evaluator - RegExp-Evaluator - Ergebnis
Erklärung:
(<li>)(.+?)(?!</li>)(<li>)
==> (?!</li>) ist ein versuch mit Assertions das diese Zeichenkette nicht drin vorkommen kann
Bisher gibt er mir komischerweise immer Aufzählung 1,3 zurück.
Vielleicht könnt ihr mir hier helfen.
Perfekt wäre natürlich dann mit preg_replace ==> $1 $2 </li>$4
die offenen tags automatische schließen zu lassen, wobei ich wahrscheinlich hier dann mit preg_match_all und einer schleife arbeiten muss oder?
Beste Grüße
RegEx Noob
Kommentar