Entfernen von redundanten Zeilenumbrüche mit regulären Ausdrücken
-
03-07-2019 - |
Frage
Ich entwickle eine in PHP, die einfach zeigt Meldungen , die von den Besuchern (im Idealfall rund um das Thema der Website) veröffentlicht. Jeder kann auf drei Nachrichten pro Stunde post up.
Da die Webseite nur eine Seite sein wird, würde Ich mag die vertikale Länge jeder Nachricht steuern. Allerdings mag ich zumindest teilweise Zeilenumbrüche in der ursprünglichen Nachricht erhalten. Ein Kompromiss wäre für zwei Zeilenumbrüche zu ermöglichen, aber wenn es mehr als zwei ist, dann ersetzen Sie sie durch insgesamt zwei Zeilenumbrüche in einer Reihe. Stapelüberlauf führt dies.
Zum Beispiel:
"Porcupines \ Nare \ n \ n \ n \ nporcupiney."
würde geändert werden
"Porcupines
sind
porcupiney."
Ein Aspekt heikel für Zeile des Prüfens bricht, ist die Möglichkeit ihrer als \ r \ n \ r oder \ n gesammelt und gespeichert werden. Ich dachte an alle Zeilen Umwandlung bricht /> s mit nl2br ()
Meine Frage: Verwenden von regulären Ausdrücken in PHP (mit Funktionen wie preg_match () und preg_replace ()), wie kann ich überprüfen, für Instanzen von mehr als zwei Zeilenumbrüchen in einer Reihe (mit oder ohne Leerzeichen dazwischen) und dann ändern sie auf insgesamt zwei Zeilenumbrüche?
Lösung
preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)
Andere Tipps
So etwas wie
preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);
sollte funktionieren, denke ich. Obwohl ich nicht genau PHP-Syntax erinnern, könnte es etwas mehr Entkommen brauchen: - /