\n vor HTML-Tags entfernen

Parantatatam

mag Cookies & Kekse
Guten Abend,

ich habe mal wieder ein Problem bei dem ich gerade nicht den Anlauf schaffe auf einen sinnvollen Gedanken zu finden. Also mein Problem sieht folgendermaßen aus: ich habe eine eigene XML-Klasse und dementsprechend werden die XML-Tags bei der Ausgabe jeweils auf eine eigene Zeile geschrieben (schöner Quelltext). Diese Klasse ist Grundbaustein für meine Klasse, welche ich zur HTML-Seitenerstellung nutze. In HTML gibt es aber auch Tags wie <b> ... </b> oder <i> ... </i> bei denen es blöd aussieht, wenn sie einen Umbruch im Quelltext erzeugen würden. Bei denen das \n zu entfernen ist nicht so schwer, jedoch wenn ich nun Tags wie <a href=""> ... </a> nutze, dann habe ich ja auch noch Attribute, welche in beliebiger Anzahl und Reihenfolge vorkommen können. Hätte jemand von euch eine Idee, wie man bei denen das \n entfernen könnte?
 
Moin,

mit preg_replace sollte das nicht sehr problematisch sein, die Attribute können dir eigentlich egal sein, wenn du da valides HTML hast :)

kleines Beispiel:

Code:
preg_replace('@[\r\n]+(<(a|b|i|u|span))\b@iu','\\1',$xmlstring)
Gesucht werden \r oder \n ,gefolgt von der öffnenden Klammer. Selbiger folgt der tagName...der Rest ist dann egal(er wird durch das \b...die Wortgrenze gefunden, so dass bspw. wirklich nur <a> und nicht etwa auch <area> bearbeitet wird.)
 
Das läuft soweit gut bis zu den schließenden HTML-Tags. Ich verstehe aktuell die Umsetzung von RedEx in PHP noch nicht so wirklich, aber ich werde langsam besser. Hat für das oben genannte Problem noch jemand eine Verbesserung?

EDIT: Es war einfacher als gedacht: ich musste nur die schließenden Tags noch ergänzen, so dass das Ganze nun so aussieht:
PHP:
<?php
preg_replace('@[\r\n]+(<(a|b|i|u|span|/a|/b|/i))\b@iu','\\1', $xmltags);
?>
 
Zuletzt bearbeitet:
Zurück