P-Tags mit Zeilenumbrüchen entfernen

Hallo,

Ich habe einen PHP-String mit HTML-Code. Dieser enthält P-Tags mit Text und P-Tags mit unterschiedlich vielen Zeilenumbrüchen. Die P-Tags, die nur aus Zeilenumbrüchen bestehen, sollen entfernt werden. Dies würde ich einfach mit str_replace() machen, aber da die Tags ja unterschiedlich viele Zeilenumbrüche enthalten, weiß ich nicht weiter.

Ich hoffe, ihr könnt mir helfen.

Schau dir mal preg_replace http://php.net/manual/de/function.preg-replace.php an.

Klar… Ich meinte ja preg_replace(). Mit preg_replace("#

[\n]

#", “”, $string) geht es leider nicht.

Haben die Absätze in dem Text denn immer Endmarkierungen? (muß ja bei HTML nicht sein).
Wenn ja, kannst du doch erstmal alle Zeilenumbrüche innerhalb des Absatzes enfternen und
danach alle Absätze ohne Inhalt.
Da kann es dann auch noch drauf ankommen, mit welchem Betriebssystem die Zeilenumbrüche
erzeugt wurden - bei winodws etwa sind das mehrere Zeichen, die entsorgt werden müssen.
Dann könnten natürlich noch Leerzeichen übrigbleiben.
Pauschal kann man natürlich alle aufeinanderfolgenden Leerzeichen zu einem zusammenschnurren lassen.
Das übliche Verfahren besteht darin, alle Zeilenumbrüche in Leerzeichen zu konvertieren,
dann Leerzeichen zusammenschnurren lassen.
Was dann bleibt, kann man meist leichter bearbeiten - oder im Bedarfsfalle auch leichter entsorgen,
wenn es bis auf maximal ein Leerzeichen leer ist.

Ich mache mal ein Beispiel: <p>Hallo\nWelt</p><p>/n/n</p> soll zu <p>Hallo\nWelt</p> umgewandelt werden.

Folgender Ausdruck findet leere Absätze.

GRANDIOS! Es funktioniert. Vielen Dank. :wink:

Du meintest gerade, dass die Zeilenumbrüche je nach Betriebssystem unterschiedlich sind. Ich habe mal gehört, dass PHP alle Zeilenumbrüche mit “\n” verarbeitet. Mein Script läuft auf Windows und Linux gleich, obwohl Windows ja eigentlich “\r\n” hat. Besteht dieses Problem also mit PHP5 immer noch oder kann ich ohne schlechtes Gewissen mit “\n” arbeiten? Und wenn nein, kann ich alle Zeilenumbrüche (also “\r\n” und “\r”) einfach nach “\n” umwandeln?

Der Ausdruck von progandy wirkt auf alle Steuerzeichen, also auch so etwas:

"<p>Hallo\nWelt</p><p>\r\n\t\n</p><p></p>"

OK. Danke :wink: