RegExp-Alle unnötigen Leerzeigen

SCIPIO-AEMILIANUS

aka Dubdidadu
Ich hab nicht alzu viel Übung mit regulären Ausdrücken und hab im moment absolut keine Ahnung wie, bzw ob es möglich ist aus einem String alle unnötigen Leerzeichen via. Regulären Aussdrücken zu löschen.

Soll heißen Leerzeichen am Anfang des String, am Ende löschen und mehrfache durch ein einziges ersetzen.
zB: " asdf asdf " wird zu "asdf asdf"
Kann mir wer da voran helfen?

Google gab mir vorerst nur bis hierhin hilfe:
PHP:
preg_replace ('#\s+#' , ' ' , $text);
was soweit ja alle Leerzeichen ersetzen dürfte
 
Zuletzt bearbeitet:
Am Anfang und Ende geht mit trim() (Einfach mal unter php.net schauen)
Kenn mich auch nicht so gut aus, aber vielleicht könnte man nach doppelten Leerzeichen suchen und sie dann ersetzen (durch nur 1 davon)
 
Wie wärs mit

PHP:
echo preg_replace('/([ ]{2})/', ', trim($text) );

- Mit Trim die führenden und folgenden Leerzeichen entfernen
- Mit dem pattern '/([ ]{2})/' alle Leerzeichenfolden die mindestens die Länge 2 haben durch ein ' ' ersetzen

Wenn du anstelle von [ ]{2} das '/([\s]{2})/' verwednest, werden nicht nur Leerzeichen sondern auch Tabs, Zeilenumbrüche etc. mitgezählt
 
Versuch mal:
PHP:
preg_replace("/( +)/", " ", $text);
€: Habe das Trim vergessen-.-
 
Zuletzt bearbeitet:
Ich bedank mich schon mal bei allen.
Ein kleines Problem bei allen den oben genannten:
" asdf asdfsdf asdfs sad fa "
wird eingegeben und die Ausgabe, nachdem ich noch links und rechts evt. vorhande Leerzeichen entfernt hab:
asdf asdfsdf asdfs sad fa

Ich hatte jetzt das Beispiel von Yaslaw noch um ein Komma erweitert:
Da ja auch mehr als 2 Leerzeichen infolge vorkommen könnten.

EDIT: Der FF zerschießt etwas die Leerzeichen, es sind immer noch zwischen den Wörtern die Leerzeichen vorhanden. Was muss ich noch an dem Ausdruck ändern, dass die auch gelöscht werden?
 
Zuletzt bearbeitet:
Hier noch ein Vorschlag:
PHP:
<?php
$string = " asdf asdfsdf  asdfs       sad fa " ;
var_dump(preg_replace('/\s+/', ' ', trim($string)));
 
Zurück