trim($_POST) möglich?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • trim($_POST) möglich?

    Hi Leute,

    folgende Frage: Ich habe ein Script, bei dem mal prinzipiell alle Semikolon ( ; ) im $_POST-Array durch ein Komma ( , ) ersetzt wird. Das mache ich so:

    PHP-Code:
    $_POST str_replace(";",",",$_POST); 
    Nun würde ich gerne auch alle Leerzeichen entfernen, aber bei
    PHP-Code:
    $_POST trim($_POST); 
    bekomme ich die Fehlermeldung: Notice: Array to string conversion in ..../post_replace.php on line 4

    Ich nehme an, dass trim eine reine Stringfunktion ist und daher nicht auf das $_POST-Array anwendbar ist. Aber wieso funkt dann str_replace?

    Ich habe jetzt im Forum folgenden Code gefunden, daher anscheinend mein Problem löst:

    PHP-Code:
    while (list($name$value) = each($_POST))
    {
        $
    $name addslashes(trim($value));

    Dieser Code liest doch einfach jeden Eintrag in $_POST aus, entfernt die Leerzeichen und wendet addslashes an und speichert diese dann wieder zurück ins Array und ich kann dann ganz normal mit den veränderten Werten arbeiten, oder?

    Danke, Lukas

  • #2
    Wenn ich jetzt wüsste, was dein Problem ist? Anscheinend konntest du es doch mittels der Suchfunktion beheben.

    Kommentar


    • #3
      Code:
      mixed str_replace ( mixed search, mixed replace, mixed subject )
      string trim ( string str )
      ist der unterschied klar?

      Kommentar


      • #4
        Re: trim($_POST) möglich?

        Hi TobiaZ!

        Ich wollte nur den Grund für diesen Notice-Fehler nachfragen.

        Original geschrieben von skalu
        Ich nehme an, dass trim eine reine Stringfunktion ist und daher nicht auf das $_POST-Array anwendbar ist. Aber wieso funkt dann str_replace?
        --> ist aber von penizilin beantwortet worden

        Außerdem wollte ich wissen, ob ich das richtig verstanden habe:

        Original geschrieben von skalu
        Dieser Code liest doch einfach jeden Eintrag in $_POST aus, entfernt die Leerzeichen und wendet addslashes an und speichert diese dann wieder zurück ins Array und ich kann dann ganz normal mit den veränderten Werten arbeiten, oder?
        Oder hat das - abgesehen vom trim() und addslashes() - noch weitere Auswirkungen auf meine Variablen, die ich mit den Werten aus z.B. $_POST["test"] hole...

        @penizilin
        mixed bedeutet also, dass es auf Strings und Arrays anwendbar ist, richtig?

        Danke schon mal,
        Lukas

        Kommentar


        • #5
          so lange du nur trim und addslashes anwendest, hat es auch nur den einfluss.

          mixed ist eben mixed. könnte theoretisch auch z.b. int sein, auch wenns in deinem fall keinen sinn machen würe.

          Kommentar


          • #6
            okay, danke euch! Eine Frage hätte ich aber noch:

            Es ist seltsamerweise ein Unterschied, ob ich mit dieser While-Schleife nun das trim durchführe, oder direkt die Variable mit dem Wert aus $_POST["variable"] trime ($var = $_POST["variable"]; )

            Bei der While Schleife wird aus " test " --> 'test ' (also mit einem Leerzeichen am Ende und bei der Variablen direkt ($var = trim($var); ) bekomme ich 'test' (ohne irgendein Leerzeichen.

            Was könnte da der Grund sein?

            Greetz Lukas

            Kommentar


            • #7
              nichts verstanden, zeig mal den code.

              Kommentar


              • #8
                ok

                Die ' bei den Ausgaben dienen nur dazu, die Leerzeichen sichtbar zu machen.

                Mit diesem Code bekomme ich, wenn der Wert ' test ' in ein Textfeld eingegeben wurde, 'test ' (also mit einem Leerzeichen am Ende).

                PHP-Code:
                while (list($name$value) = each($_POST))
                {
                    $
                $name trim($value);
                }

                --> 
                $var $_POST["variable"]; 
                Mit diesem Code erhalte ich diesen String, wenn ich $var ausgebe: 'test' (ohne Leerzeichen)

                PHP-Code:
                $var $_POST["variable"];
                $var trim ($var); 
                Ich hoffe, jetzt habe ich's verständlich genug erklärt

                Greetz Lukas

                Kommentar


                • #9
                  klingt nach unsinn. trim ist trim, und kann nich die hälfte der arbeit verrichten. das wäre zauberei.

                  Kommentar


                  • #10
                    @skalu

                    die ' sind schon im string vor dem trim() oder erst zur ausgabe?
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      @penizilin

                      ist aber so, tut mir leid

                      Hier mal der Source-Code, vielleicht hat's da etwas!

                      post_replace.php

                      <html>
                      <head>
                      <meta http-equiv="Content-Language" content="de">
                      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                      <title>test 1</title>
                      </head>
                      <body>
                      <form method="POST" action="post_replace_do.php">
                      <p>POST REPLACE</p>
                      <p><input type="text" name="textfeld1" size="20"></p>
                      <p><input type="submit" value="Absenden" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
                      </form>
                      </body>
                      </html>

                      post_replace_do.php

                      <?

                      while (list($name, $value) = each($_POST))
                      {
                      $$name = trim($value);
                      }

                      $var = $_POST["textfeld1"];

                      ?>
                      <html>
                      <head>
                      <meta http-equiv="Content-Language" content="de">
                      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                      <title>test 2</title>
                      </head>
                      <body>
                      Der Text lautet: '<? echo $var; ?>'
                      </body>
                      </html>

                      @Abraxax

                      hmm, also die Striche mache ich erst in der Ausgabe, siehe Der Text lautet: '<? echo $var; ?>'

                      Anscheinend mache ich das etwas falsch...

                      Tnx, Lukas

                      Kommentar


                      • #12
                        ist aber so, tut mir leid
                        ist es nicht.

                        du legst neue variablen an, veränderst dabei kein bit an dem array $_POST. lässt dir zum schluss $_POST["textfeld1"]; ausgeben und wunderst dich, dass es nichts genützt hat.

                        Code:
                        Der Text lautet: '<? echo $textfeld1; ?>'

                        Kommentar


                        • #13
                          sinnfrei (von dir)
                          PHP-Code:
                          while (list($name$value) = each($_POST))
                          {
                          $
                          $name trim($value);

                          sinnvoll(er)
                          PHP-Code:
                          while (list($name$value) = each($_POST))
                          {
                          if (!
                          is_array($value))
                            
                          $_POST[$name] = trim($value);

                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Okay, jetzt verstehe ich. Ich habe in meiner ersten Antwort auf meinen Request nachgefragt, ob die Werte direkt im Array geändert werden.

                            Dieser Code liest doch einfach jeden Eintrag in $_POST aus, entfernt die Leerzeichen und wendet addslashes an und speichert diese dann wieder zurück ins Array und ich kann dann ganz normal mit den veränderten Werten arbeiten, oder?

                            Und ich dachte, dass ich dann trotzdem ganz normal den Wert in einer Variablen speichern kann, also mit $var = $_POST["textfeld1"]; , weil der Wert von "textfeld1" ja direkt bearbeitet wurde.

                            Das war wohl ein Missverständnis, sorry

                            @Abraxax

                            Ja, genau! Das war mein Fehler. So funktioniert es wunderbar! Vielen Dank!

                            Greetz Lukas

                            Kommentar

                            Lädt...
                            X