eindeutig Prüfen ob Zahl in String

  • Kennt jemand eine Möglichkeit zu prüfen ob eine Zahl eindeutig in einem String vorkommt?


    Also ich habe ein String: "23, 5, 3, 45, 83"
    Jetzt möchte ich wissen ob der String die 4 (als einzelne Zahl) enthält,
    wenn ich mit preg_match @4@ hingehe bekomme ich true obwohl nur 45 enthalten.


    Ich könnte natürlich auf @4,@ prüfen, aber das ist doch nicht die feine Art oder? ?(

  • @Basiii, das hatte ich ja schon vorgeschlagen aber nicht als gut empfunden ;)
    Danke cotton, das verdammte explode() hat noch nicht den weg in mein Hirn gefunden, so das ich selber drauf kommen könnte es anzuwenden :D

  • Der Modifikator s bringt dir eher wenig:


    Zitat von php.net

    Wenn dieser Modifikator gesetzt ist, passt das Metazeichen Punkt im Suchmuster auf alle Zeichen inklusive Zeilenumbrüche.


    1. Du nutzt keinen Punkt
    2. Erzielt der Modifikator eben DAS Leerzeichen erlaubt sind


    Ansonsten ist das korrekt, geht aber auch einfacher:

    Code
    /^[\w_]+$/
    \w = [A-Za-z0-9]
  • Danke.
    Ich lese mir gerade das hier durch http://qntm.org/files/re/re.html
    und ... von wegen 55min :D
    Vlt wenn man es nur überfliegt und schon kann ;D


    Und Basiii - dort steht

    Zitat


    \w means the same as [0-9A-Za-z_]: "find a word character".


    Also reicht

    Zitat

    /^[\w]+$/


    aus?


    btw: soll für meine Sql class genutzt werden.
    Hintergrund; mysql_real_escape is lahm und depreciated. Und die PDO bietet keine ähnliche wirksame/empfohlene Methode.
    Gedacht ist es für tablenames und columns die dynamisch erstellt werden. Die kommen zwar aus der eigenen Config, aber ich will die trotzdem prüfen lassen.

  • @Basiii
    brauch mal hilfe:

    PHP
    if(!preg_match("/^[\w() ,`]+$/",$str)){
                throw new Exception('"'.$str.'" is not valid!');
            }
            return $str;


    Dort schicke ich keinen Userinput rein. sondern nur config Data (table names, oder zB VARCHAR(32)).
    Also wenn, dann würde sich der Admin selbst "hacken" :D
    Ich muss also Klammern, Leerzeichen, Komma und ` zulassen, damit das db Modell erstellt werden kann.


    Frage: fällt Dir ne Injection dazu ein?

  • Die Lösung:

  • Und @Sassenburger: bitte, bitte, bitte, gewöhne dir als Allererstes und sofort die Verwendung von goto ab! *auf Knien bettel* Wenn es etwas gibt, was in PHP absolut nie hätte hinzugefügt werden sollen, dann goto!


    Frag zur Not, wenn es beim Code ändern Probleme gibt, aber ändere ihn. BITTE!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!