PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   RegEx Leere Zeilen entfernen (https://www.php-resource.de/forum/php-developer-forum/102072-regex-leere-zeilen-entfernen.html)

Mathis 23-08-2011 12:49

RegEx Leere Zeilen entfernen
 
Hallo zusammen!

Ich habe einen String mit Text und jede Menge überflüssigen Zeilenumbrüchen. Diese sollen weg. Allerdings nur die vor und nach dem Text. Nicht die im Text. Also beispielsweise soll aus

Code:

$text = "



asdasd
asdasd

asdsadasd
asdasd



";

soll

Code:

$text = "asdasd
asdasd

asdsadasd
asdasd";

werden. Wichtig ist eben, dass die Zeilenumbrüche im Text erhalten bleiben. Ich weiß, dass sich das mit regulären Ausdrücken lösen lässt, habe aber zugegebenermaßen keine Ahnung wie. Kann mir jemand nen Tipp geben?

Vielen Dank schonmal!!

ApoY2k 23-08-2011 14:52

Dazu muss man aber folgende Information haben: Welche Zeilenumbrüche sind es denn? Unix? Mac? Windows? Das folgende Snippet funktioniert bei mir z.B. einwandfrei, das muss aber nicht für dich gelten;

PHP-Code:

$text "text1
text1



text2




text3"
;
$text preg_replace('/\r/'''$text);
echo 
preg_replace('/\n\n+/'"\n\n"$text);

/* Ausgabe:

text1
text1

text2

text3

*/ 


fireweasel 23-08-2011 22:57

Zitat:

Zitat von Mathis (Beitrag 655992)
Hallo zusammen!

Ich habe einen String mit Text und jede Menge überflüssigen Zeilenumbrüchen. Diese sollen weg. Allerdings nur die vor und nach dem Text. Nicht die im Text. Also beispielsweise soll aus

Code:

$text = "



asdasd
asdasd

asdsadasd
asdasd



";

soll

Code:

$text = "asdasd
asdasd

asdsadasd
asdasd";

werden. Wichtig ist eben, dass die Zeilenumbrüche im Text erhalten bleiben. Ich weiß, dass sich das mit regulären Ausdrücken lösen lässt, habe aber zugegebenermaßen keine Ahnung wie. Kann mir jemand nen Tipp geben?

Vielen Dank schonmal!!

preg_replace('/(\A[\r\n]+|[\r\n]+\z)/', '', $text);

Das löscht alle (normalen[0]) Zeilenumbruchzeichen, die direkt auf den Textanfang folgen und alle Zeilenumbruchzeichen, die direkt vor dem Textende stehen.

Ungeprüft, sollte aber funktionieren.

--
[0] Es gibt im Unicode-Repertoir noch einige "Umbruchzeichen" mehr, die verwendet aber normalerweise kein Mensch.

Mathis 24-08-2011 10:11

Zitat:

preg_replace('/(\A[\r\n]+|[\r\n]+\z)/', '', $text);
Cool, danke... Funktioniert!!

Quetschi 24-08-2011 11:30

Hätte trim() nicht gereicht?

fireweasel 26-08-2011 11:36

Zitat:

Zitat von Quetschi (Beitrag 656005)
Hätte trim() nicht gereicht?

Sicher.

Aber es war ja explizit nach einer Regex-Lösung gefragt worden. ;)

goth 26-08-2011 18:58

Zitat:

Zitat von Quetschi (Beitrag 656005)
Hätte trim() nicht gereicht?

Trim ist kaputt.

wahsaga 26-08-2011 19:42

Zitat:

Zitat von goth (Beitrag 656093)
Trim ist kaputt.

Erzähl ...!

fireweasel 28-08-2011 00:16

Zitat:

Zitat von goth (Beitrag 656093)
Trim ist kaputt.

Abgesehen davon, dass die Zeichensuche nur auf Byte-Basis geschieht, kann ich an trim() nichts kaputtes finden. :confused:


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:37 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG