Ankündigung

Einklappen
Keine Ankündigung bisher.

$_POST Variable durchsuchen

Einklappen

Neue Werbung 2019

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

  • $_POST Variable durchsuchen

    Hallo!

    Bin neu hier und mit php noch nicht so vertraut. Stehe vor folgender Situation:

    - Habe eine (HTML)Eingabemaske in der der Benutzer einen Text eingibt und diesen abschickt
    - Dieser Text soll später in eine MySQL-DB gespeichert werden
    - Zuvor soll überprüft werden, obsich ein bestimmtes Wort in diesem Text befindet

    Anforderung:
    Das Wort "test" soll in dem Text gesucht werden. Dabei sollen Wörter wie "Testfahrt", "testfahrt" und "Fahrertest" ebenfalls gefunden werden.

    Frage:
    Kann ich die $_POST-Variable, welche mir meinen zuvor eingegebenen Text übergibt, schon auf den Bestandteil "test" durchsuchen, oder muss ich das ganze erst in eine DB speichern (möchte ich eigentlich vermeiden) und mit %test% filtern?

    Danke mal im Voraus an alle, die mir bei meinem Problem weiterhelfen konnten. Bitte bedenkt ich habe von php wirklich wenig Ahnung, vielleicht könnt ihr mir ja auch einen guten Literaturhinweis geben oder auf eine Stelle in einer Onlinehilfe.

    Danke,

    JAN
    Gefundene Schreibfehler dürfen gerne behalten werden

  • #2
    http://de2.php.net/strpos

    Du kannst damit die Position herausfinden, wenn der Rückgabewert !== false (ja 1x ! und 2x ==) ist, dann kommt das Wort darin vor.

    Kommentar


    • #3
      Doku?! http://de2.php.net/manual/de/function.strpos.php

      Gruß
      phpfan

      Kommentar


      • #4
        Danke für die Hilfe

        Also erstmal Danke für die schnelle Hilfe!

        War in der Zwischenzeit auch nicht untätig und habe (so glaube ich zumindest) unter

        http://www.selfphp.net/selfphp/funkt...str_count.html

        einen Lösungsweg gefunden. Wenn ich beispielsweise mit folgendem Code vorangehe...

        $treffer = substr_count($_POST['text'], "test");
        if ($treffer1 != "0") {
        echo "Sie haben in Ihrem Text das Wort test ".$treffer."x verwendet";
        }

        ... dann müsste es doch eigentlich auch gehen, oder? Nur ob es mit der Groß-/Kleinschreibung Konflikte gibt muss ich noch testen.

        Auf alle Fälle mal vielen Dank.

        Viele Grüße,

        JAN
        Gefundene Schreibfehler dürfen gerne behalten werden

        Kommentar


        • #5
          Nicht ganz
          PHP-Code:
          if ($treffer1 != "0"
          ist unsauber, schreibe
          PHP-Code:
          if ($treffer1 != 0
          da substr_count die eine Zahl liefert. Die Klein/Großschrift bekommst du mit strtolower hin.

          Und noch ein Tipp. Informiere dich besser in der Doku über Funktionen.

          Gruß
          phpfan

          Kommentar


          • #6
            Dachte mir schon, dass ich da noch was übersehen habe . Habe in der Aufregung etwas passendes gefunden zu haben den Text in der Doku nur überflogen.

            Besten Dank nochmal ,

            viele Grüße

            JAN
            Gefundene Schreibfehler dürfen gerne behalten werden

            Kommentar


            • #7
              Naja hat er doch schon gut gemacht.
              Ich würde trotzdem strpos() vorschlagen, ist schneller und dich interessiert ja nicht die Anzahl. Die Position zwar auch nicht, aber ist trotzdem der schnellste Weg.

              Kommentar


              • #8
                Meinst Du mit "der schnellste Weg", dass die Ausführung des Befehls schneller von statten geht als die substr_count()-Variante oder dass es vom Quelltext her einfach kürzer ausfällt?

                Viele Grüße,

                JAN
                Gefundene Schreibfehler dürfen gerne behalten werden

                Kommentar


                • #9
                  Der Befehl ist einfach "physikalisch" schneller, da er ja beim 1. Treffer die Suche gleich abbricht. Bei dir wird der komplette String durchsucht. Ist natürlich kein großer Unterschied, nur sollte man gleich von anfang an die sinnvolleren Funktionen verwenden.

                  Quelltext einsparen kannst du, in dem du auf die Variable $treffer verzichtest:
                  Code:
                  if (strpos($_POST['text'], 'test') !== false) {
                    // kommt vor
                  } else {
                    // nope
                  }
                  >

                  Kommentar


                  • #10
                    Wieso eigentlich strpos, wenn er die Position nicht benötigt? stristr() passt hier wohl besser

                    Kommentar


                    • #11
                      Und was soll er mit dem Reststring?
                      Um etwas zu finden musst du wissen wo es ist, strpos() eben

                      Kommentar


                      • #12
                        Muss ich nicht wissen, sondern die Funktion. Sie muss es mir aber nicht sagen, sondern true oder false zurückgeben, denn das entspricht genau der Aufgabenstellung.

                        Kommentar


                        • #13
                          Zitat von Saraneus
                          Muss ich nicht wissen, sondern die Funktion. Sie muss es mir aber nicht sagen, sondern true oder false zurückgeben, denn das entspricht genau der Aufgabenstellung.
                          Exakt diese Funktion gibt es aber nicht und laut Manual ist strpos() dafür am besten geeignet:

                          Note: If you only want to determine if a particular needle occurs within haystack, use the faster and less memory intensive function strpos() instead.

                          Kommentar


                          • #14
                            Ich muss mich entschuldigen, der Eintrag im Manual ist überzeugend. Durch die Sprache C lag mir nichts näher als strstr(), die ja nur einen Pointer zurückliefert

                            Kommentar


                            • #15
                              Macht ja nix, Diskussion ist immer gut

                              Kommentar

                              Lädt...
                              X