RuD: Leerezeichen aus Mitte entfernen

Seid gegrüßt!

Ich kenne die Funktionen trim,... zum Entfernen von Leerzeichen am Anfang/Ende eines Strings.

Nun habe ich aber einen String der ca. so aussieht:
$string = "adgjsdgjahgsd
jkhsadf       lksdjf      lsdfjlsdf
jkhdf   kjahd   nbsdfjksd        sdfhj"; oder so ähnlich: Ich meine damit unregelmäßig viele Whitespaces in der Mitte.

Gibt es da eine Funktion, die sowas wie, alles was mehr als ein Leerzeichen hintereineander ist, zu einem umwandelt. Ich benötige die  einzelnen Teile schon getrennt von einander aber halt nur mit einem Leerzeichen.

Danke schonmal im Voraus.

--
Bis Später
                       __
      ________   _____/ //
     / ___   // / __   //
    / //  / //_/ /_/  //
   /_//  /___________//
==========================================================
Testversion meiner Seite: http://www.rudweb.de/test2
  1. Hallöchen,

    also ich hab in ner ähnlichen Richtung mal gegrübelt, bin da allerdings auch zu keinem wirklich brauchbarem Ergebnis gekommen. Wahrscheinlich kann man dem z.B. durch reguläre Ausdrücke beikommen.

    Da aich aber auch diesen nicht mächtig bin, würd ich ne Funktion bauen, die immer 2 Leerzeichen zu einem umbaut und die Funktion solang in ner Schleife drüberlaufen lassen, bis sie false ergibt und das Problem gelöst sein dürfte.

    Zugegeben... nicht wirklich elegant, aber reguläre Audrücke sind ein leichtes Rätsel für mich ;-) Und eine entsprechende Funktion kenne ich auch nicht.

    Gruß Patrick

    1. Seid gegrüßt!
      Ebenso geht es mir auch mit RegEx. Deshalb danke ich dir für deinen Vorschlag. Ich werds gleich mal probieren.

      --
      Bis Später
                             __
            ________   _____/ //
           / ___   // / __   //
          / //  / //_/ /_/  //
         /_//  /___________//
      ==========================================================
      Testversion meiner Seite: http://www.rudweb.de/test2
  2. Hell-O!

    Gibt es da eine Funktion, die sowas wie, alles was mehr als ein Leerzeichen hintereineander ist, zu einem umwandelt. Ich benötige die  einzelnen Teile schon getrennt von einander aber halt nur mit einem Leerzeichen.

    http://php.net/preg_replace, Beispiel 5.

    Siechfred

    --
    Hier könnte Ihre Werbung stehen.
    Räucherofen selber gebaut || Das Steuerblog  || RT 221 Erfurt-Altstadt i.V.
  3. Hi

    Ich bin nicht so gut in Regulären Ausdrücken, aber ich würde einfach sagen: /\s+/ replacen durch ein Leerzeichen

    mfg
    Genie

  4. gudn tach!

    Nun habe ich aber einen String der ca. so aussieht:
    $string = "adgjsdgjahgsd
    jkhsadf       lksdjf      lsdfjlsdf
    jkhdf   kjahd   nbsdfjksd        sdfhj"; oder so ähnlich: Ich meine damit unregelmäßig viele Whitespaces in der Mitte.

    Gibt es da eine Funktion, die sowas wie, alles was mehr als ein Leerzeichen hintereineander ist, zu einem umwandelt.

    was denn nun? whitespaces oder leerzeichen?
    willst du nur alle mehrfachen leerzeichen durch einzelne leerzeichen ersetzen, so geht dies z.b. mit
      '/  +/ /g'
    also preg_replace('/ +/ /g', $str);.

    willst du dagegen alle beliebigen folgen von mind. 2 whitespaces durch einfache leerzeichen ersetzen, so geht das mit
      '/\s{2,}/ /g'
    oder aeuquivalent dazu:
      '/\s\s+/ /g'

    willst du alle mehrfach hintereinander auftretenden whitespaces durch einfache leerzeichen ersetzen, so geht das mit
      '/(\s)\1+/ /g'
    damit werden z.b. zwei oder mehr leerzeichen ersetzt; oder zwei oder mehr tabulatoren... aber z.b. nicht "\t \t ".

    sollen alle mehrfach hintereinander auftretenden whitespaces geloescht (also zu einem zusammengeschrumpft) werden, so ist das mit
      '/(\s)\1+/$1/g'
    zu bewerkstelligen.

    erklaerung zu den einzelnen bestandteilen lassen sich im nu finden, z.b. per google, wikipedia (regexp) sowie dem perl- (perldoc perlre) oder php-manual.

    prost
    seth