String überprüfen

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

  • String überprüfen

    Hallo,

    ich durchsuche einen String nach einem Suchstring.
    z.B. mit strchr ($text,$suche)

    jetzt möchte ich überprüfen, ob der Suchstring in dem Text alleinstehend vorkommt oder ob er sich in einem Text befindet.

    Angenommen in dem Text "Der Wagen hält an der Ampel"
    wird nach "an" gesucht kann dieser Text ausgegeben werden da das "an" alleine steht.

    Heißt der Text aber "Das kann man nicht" kommt der Suchstring "an" 2mal vor. Allerdings sollte jetzt die Ausgabe unterdrückt werden da "an" nicht alleine steht sondern innerhalb von anderen Worten.
    Da weiß ich nicht wie ich das anstellen soll.

    Wer weiß Rat? Ich habe keinen entsprechenden Befehl gefunden.

    MfG
    Sipart

  • #2
    denken wir mal logisch:
    - entweder wird "an" in einem satz von leerzeichen, oder satzzeichen (.,:!?) gefolgt UND es steht ein leerzeichen am anfang
    - oder "an" ist der ganze string

    dann wären regex mit preg_match() dein freund ... schau mal in die tutorials ... sky hat da was geschrieben zu "regulären ausdrücken" ... deiner ist imho eine gute anfängerübung
    Kissolino.com

    Kommentar


    • #3
      Ja das tut scheint mir zu helfen....

      ...bin nun aber shon zu müde und mache morgen weiter.

      Vielen Dank

      Sipart

      Kommentar


      • #4
        Original geschrieben von Wurzel
        denken wir mal logisch:
        - entweder wird "an" in einem satz von leerzeichen, oder satzzeichen (.,:!?) gefolgt UND es steht ein leerzeichen am anfang
        - oder "an" ist der ganze string
        und wenn der satz "an der wurzel muss das problem gepackt werden" lautet?
        kein space vor an, an trotzdem einzeln im text :-P

        dann wären regex mit preg_match() dein freund ...
        dann würde sich die simple assertion \b anbieten, "word boundary".

        #\ban\b#
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          OffTopic:
          wenn du an meine wurzel packst, werd' ich komisch
          aber wo du recht hast ...
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            wenn du an meine wurzel packst, werd' ich komisch
            so verzweifelt kann man doch gar nicht sein.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von wahsaga
              so verzweifelt kann man doch gar nicht sein.
              reine schutzbehauptung.
              Kissolino.com

              Kommentar


              • #8
                Original geschrieben von Wurzel
                reine schutzbehauptung.
                um mich vor dir zu schützen, ist mir fast jedes mittel recht ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  das hab ich gerne: erst am wurzel packen wollen und dann nicht dazu stehen! wer schützt mich eigentlich vor dir?

                  btw: was ist los? versagt grad dein interner spamblocker?
                  Kissolino.com

                  Kommentar


                  • #10
                    wieder ein denkfehler ????

                    Also, habe versucht oben genanntes umzusetzen, ohne Erfolg.

                    Der Code sieht folgendermaßen aus: (die vorherige sql-abfrage ist ok)


                    while ($r = mysql_fetch_array($result))

                    {

                    $r['deu']=str_replace(chr(34),chr(32),$r['deu']);

                    $r['chin']=str_replace(chr(34),chr(32),$r['chin']);

                    $text=$r['deu'].$r['chin'];

                    if (preg_match ("/\$text\b/i" , $_POST['search']))

                    {
                    print "A match was found.";

                    echo "Deutsch: ". $r['deu']."\n<br>";

                    echo "Chines .: ". $r['chin']."\n<br><br>";
                    }
                    }

                    Er gibt keinen match aus, obwohl er vorhanden ist.
                    Habe ich ne syntax nicht beachtet?

                    Kommentar


                    • #11
                      Code:
                      if (preg_match ('#'.$text.'\b#is' , $_POST['search']))
                      bitte php- oder code-tags benutzen. danke.

                      vieleicht solltest du dir generierte strings zur kontrolle vorher ausgeben lassen.
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        danke für die rasche antwort

                        Aber ich bekomme folgende Fehlermeldung:

                        Warning: Compilation failed: missing ) at offset 27

                        if (preg_match ('#'.$text.'\b#is' , $_POST['search']))

                        ist das nurn rechtschreibfehler oder liegt der fehler in meinem weiteren code?


                        mfg
                        Sipart

                        Kommentar


                        • #13
                          missing ) aber wo ???

                          Hi Leute entweder ich bin nun völlig blind oder hier hat sich ein Fehler eingeschlichen....



                          Fehlermeldung: Warning: Compilation failed: missing ) at offset 27
                          (Das ist die Zeile mit der If-Abfrage)



                          while ($r = mysql_fetch_array($result))

                          {

                          $r['deu']=str_replace(chr(34),chr(32),$r['deu']);

                          $r['chin']=str_replace(chr(34),chr(32),$r['chin']);

                          $text=$r['deu'].$r['chin'];

                          if (preg_match ('#'.$text.'\b#is' , $_POST['search']))
                          {
                          print "A match was found.";

                          echo "Deutsch: ". $r['deu']."\n<br>";

                          echo "Chines .: ". $r['chin']."\n<br><br>";
                          }
                          }

                          Kommentar


                          • #14
                            na in der variablen ...

                            - quotemeta()
                            - preg_quote()

                            hättest ja auch im anderen thread weiterschreiben können

                            ansonsten, wenn du dir nicht sicher bist, mach doch testausgaben, bei dynamisch generierten texten ...
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              ? sorry aber irgendwie kann ich Dir nicht folgen

                              das liegt aber wohl daran das ich absoluter Neuling bin.

                              Kommentar

                              Lädt...
                              X