Aktueller Standort: Startseite> Neueste Artikel> Was ist die richtige Art, Multi-Line-Text-Newlines mit PREG_FILTER zu verarbeiten?

Was ist die richtige Art, Multi-Line-Text-Newlines mit PREG_FILTER zu verarbeiten?

gitbox 2025-09-25

1. Arten von neuen Zeilenzeichen

Die Darstellung von Newline -Zeichen variiert in verschiedenen Betriebssystemen. Es gibt hauptsächlich die folgenden Typen:

  • \ n : Zeilenpausen (LF), die von UNIX/Linux und MacOS verwendet werden.

  • \ r \ n : Zeilenunterbrechungen (CRLF), die von Windows verwendet werden.

  • \ r : Zeilenpausen (CR), der von Old Mac (Mac OS 9 und frühere Versionen) verwendet wird.

Wenn wir Multi-Line-Text über Plattformen hinweg verarbeiten, müssen wir häufig verschiedene Arten von neuen Zeichen gleichmäßig verarbeiten, um Probleme bei der Ausgabe oder bei weiterer Verarbeitung zu vermeiden.

2. Grundlegende Methoden zur Verwendung preg_filter

Angenommen, wir haben einen Multi-Line-Text mit unterschiedlichen Neulinen und möchten alle Neulinge in \ n (UNIX-Stil) vereinen. Dies kann mit preg_filter erreicht werden. Hier ist ein einfaches Beispiel:

 <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"Hello, World!\r\nThis is a test.\nAnother line.\rAnd one more line."</span></span><span>;

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\r\n|\r|\n/'</span></span><span>;
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_filter</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">nl2br</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>);
</span></span>

Im obigen Code definieren wir einen regulären Ausdruck / \ r \ n | \ r | \ n / , der allen Newlines übereinstimmt. Durch die Funktion preg_filter ersetzen wir alle neuen Zeichenzeichen durch \ n .

3. Warum PREG_FILTER wählen?

Der größte Unterschied zwischen preg_filter und preg_replace besteht darin, dass es NULL zurückgibt, wenn der reguläre Ersatz ausfällt, während PREG_REPLACE die ursprüngliche Zeichenfolge zurückgibt. Daher ist Preg_filter im Umgang mit Neulingen besonders geeignet, um Neulisten im Text kurz und bündig zu ersetzen und sicherzustellen, dass keine Änderungen vorgenommen werden, wenn keine neuen Zeilen übereinstimmen.

Beispielsweise verwenden wir im folgenden Code preg_replace , um dasselbe zu tun:

 <span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
</span></span>

Die Auswirkung von beiden ist gleich, aber der Rückgabewert von PREG_Filter stellt sicher, dass nur die verarbeiteten Ergebnisse zurückgegeben werden, wenn die reguläre Übereinstimmung erfolgreich ist, ohne NULL zurückzugeben, wodurch zusätzliche Beurteilung und Fehlerbehandlung vermieden werden.

4. Handle-Zeilenumbrüche im Multi-Line-Text

Wenn Sie mehrere Zeilen in Ihrem Text haben, kann die Verarbeitung von Newlines mehr als nur durch \ n ersetzt sein. Möglicherweise müssen Sie das Format Ihres Textes anhand bestimmter Bedingungen anpassen, z. B.:

  • Entfernt zusätzliche Linienbrüche.

  • Einen bestimmten Leerraum beibehalten.

  • Normalisieren Sie das Format von Newline -Zeichen.

Der folgende Code zeigt beispielsweise, wie Sie mehrere aufeinanderfolgende Neulinien im Text löschen und nur eine neue Linie beibehalten:

 <span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"Hello, World!\n\n\nThis is a test.\n\nAnother line.\n\nAnd one more line."</span></span><span>;

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\n+/'</span></span><span>;
</span><span><span class="hljs-variable">$replacement</span></span><span> = </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-variable">$cleaned_text</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_filter</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$replacement</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">nl2br</span></span><span>(</span><span><span class="hljs-variable">$cleaned_text</span></span><span>);
</span></span>

In diesem Beispiel entspricht das / \ n+ / regex mit einer oder mehreren Newlines und ersetzt sie durch eine separate neue Linie. Auf diese Weise können wir die extra leeren Zeilen ausräumen und den Text ordentlich halten.

5. Schlussfolgerung

In PHP ist PREG_FILTER eine sehr praktische Funktion, insbesondere wenn es sich um Multi-Line-Text- und Newline-Zeichen handelt. Durch die Verwendung regelmäßiger Ausdrücke rational können Sie problemlos eine verschiedene Verarbeitung von Text durchführen, einschließlich Standardisierungsleitungsunterbrechungen, das Entfernen unnötiger leerer Linien, das Ersetzen bestimmter Zeichen usw.

Wenn Sie verstehen, wie die Funktion PREG_FILTER korrekt verwendet wird, können Sie Ihre Code -Effizienz nicht nur verbessern, sondern auch Probleme vermeiden, die durch Linienbrüche in verschiedenen Betriebssystemen verursacht werden. Denken Sie bei der Durchführung von Multi-Line-Textverarbeitung daran, zu überprüfen, ob Ihr Newline-Charakter die Erwartungen erfüllt, und sie durch reguläre Ausdrücke ordnungsgemäß umzugehen, um eine Konsistenz im Textformat zu gewährleisten.