Lollblaten: Leerzeichen entfernen

Hallo Ihr alle,

Kann mir vielleicht jemand sagen, wie ich aus einem per $_POST übergebenen String $str alle Aufeinanderfolgenden Leerzeichen zu einem einzigen zusammenfügen kann, sodass am Ende nur noch ein Leerzeichen hinter/vor einem Wort steht?
Ich hab's schon mit einer FOR-Schleife probiert:
for ($i=1; $i<=strlen($text); $i++) { $text=str_replace(" &nbsp;"," ",$text) };
Funktioniert aber ned!?! Hab's auch schon mit "&nbsp;&nbsp;" und "  " probiert.

Wär schön, wenn mir jemand helfen könnt

Lollblaten

  1. Hi Lollblaten,

    Kann mir vielleicht jemand sagen, wie ich aus einem per $_POST übergebenen String $str alle Aufeinanderfolgenden Leerzeichen zu einem einzigen zusammenfügen kann, sodass am Ende nur noch ein Leerzeichen hinter/vor einem Wort steht?

    Probier es doch mal mit ereg_replace():

    $str = ereg_replace("( +)", " ", $str);

    So was in der Art solte funktionieren.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Die Definition des SelfCodes ist hier zu finden, es gibt auch einen Encoder.
    1. $str = ereg_replace("( +)", " ", $str);

      Was bedeutet das "( +)" ?

      1. Hi Lollblaten,

        $str = ereg_replace("( +)", " ", $str);
        Was bedeutet das "( +)" ?

        Die runden Klammen solltest du eigentlich auch weglassen können, dann hast du da stehen:

        " +"

        Das ist eine Art regulärer Ausdruck - lies auch im Manual zu ereg_replace().

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Wer die FAQ gelesen hat, ist klüger! ... und weiß wie man Links macht ;-)
  2. Hallo,

    Leerzeichen am Anfang und Ende einer Zeichenkette entfernst Du mit trim().

    Und für die Leerzeichen innerhalb des Strings benutze lieber einen regulären Ausdruck.
    $test = "  Ein     Satz      mit  zuviel Nichts   ist  schlecht lesbar.   Oder? ";
    $test = trim($test);
    preg_replace("/ +/", " ", $test);
    echo $test."<hr />";

    Reicht das für Deine Zwecke? Oder mußt Du verschiedene Arten von Whitespace (Leerzeichen, Tabulatoren, ...) berücksichtigen?

    Ciao,
    Andreas

    1. preg_replace("/ +/", " ", $test);

      $test = preg_replace("/ +/", " ", $test);
      muß es natürlich heißen, aber das hat ja auch Dennis schon richtig geschrieben.

      Andreas

    2. Reicht das für Deine Zwecke? Oder mußt Du verschiedene Arten von Whitespace (Leerzeichen, Tabulatoren, ...) berücksichtigen?

      Ja, also Tabulatoren usw. wenn weggingen, das wär' natürlich klasse

      1. Ja, also Tabulatoren usw. wenn weggingen, das wär' natürlich klasse

        Mit
        $text = preg_replace("/\s+/", " ", $text);
        erwischst Du alle Whitespace-Zeichen, also auch Tabulatoren, Zeilenumbrüche und Zeilenvorschübe.

        Wenn Du Umbrüche nicht entfernen möchtest, dann versuche es mal mit:
        $text = preg_replace("/[ \t]+/", " ", $text);

        Schau auch einmal z.B. unter http://de.php.net/manual/en/reference.pcre.pattern.syntax.php.

        Ciao,
        Andreas

        1. Eine kleine Frage noch: Was heißen die "/" (Slashes) bei "/\s+/" ?
          Das \s steht für Whitespace-Charakter, das + für 1 oder mehr davon, aber das / ?

          1. hi,

            Eine kleine Frage noch: Was heißen die "/" (Slashes) bei "/\s+/" ?
            Das \s steht für Whitespace-Charakter, das + für 1 oder mehr davon, aber das / ?

            stichwort: delimiter

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. stichwort: delimiter

              Was ist ein delimiter? *heul*
              Ich bin Anfänger, kein PHP-Freak

              Lolly

              1. hi,

                stichwort: delimiter
                Was ist ein delimiter? *heul*

                in diesem zusammenhang genau das, was ich davor schrieb: ein stichwort.

                Ich bin Anfänger, kein PHP-Freak

                dann bequeme dich bitte wenigstens mal eine suchmaschine zu befragen, wenn man dir ein stichwort nennt.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }