Ankündigung

Einklappen
Keine Ankündigung bisher.

Regex

Einklappen

Neue Werbung 2019

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

  • Regex

    Hi Leute,

    ich würde gerne aus verschieden string mittels regex bestimmte ausfiltern.
    Die strings sind Array Keys die ich zuvor mit Array_keys() in ein array $keys geschrieben habe und ich will alle rausfiltern welche mit "_name" , "_vorname" und "_nachname" enden um danach den vaule aus der $data zu dem key herauszubekommen.


    Die Strings/Keys sehen dabei ca. so aus:

    PHP-Code:

    123_name
    13_hfghf_name
    234234_eriou_vorname
    234234_email_nachname
    etc

    mein ansatz ist der hier:
    PHP-Code:
    foreach(preg_grep ('/.*_vorname$/i' $keys2) as $value){$vor_nachname .= $data2[$value]." ";}
    foreach(
    preg_grep ('/.*_nachname$/i'$keys2) as $value){$vor_nachname .= $data2[$value]." ";}
    foreach(
    preg_grep ('/.*_name$/i' $keys2) as $value){$vor_nachname .= $data2[$value]." ";} 
    läuft soweit auch , nur gibt es wie ihr in den bsp. strings seht mehre fälle wo es einen "_email_vorname" und "_email_nachname" gibt, welche auch rausgefiltert werden , ich diese aber nicht will.

    wie kann ich bestimmen das diese eine wort "email" als einziges nicht vor _vorname, _name etc. stehen kann.


    so long Maxwill






  • #2
    wie kann ich bestimmen das diese eine wort "email" als einziges nicht vor _vorname, _name etc. stehen kann.
    Versteh ich nicht.

    Du kannst aber bevor du die Schleifen oben laufen lässt je Wort prüfen ob zB _email_ darin vorkommt und wenn das der Fall ist dann führst du die drei Schleifen eben nicht aus.

    Das oben geht übrigens mit array_filter() oder array_map() und einer Callback etwas eleganter und in einem Rutsch. http://php.net/manual/de/function.array-filter.php Nur als Hinweis, und die Pattern kann man auch zu einem zusammenfassen.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hey , schon mal danke , mit einer zweiten abfrage kann ich es natürlich abfangen, hab ich garnicht dran gedacht. allerdings interessiert mich wie ich es in ein Pattern einbauen könnte.
      Das mit den Array_filter etc. kuck ich mir gleich mal an.

      Danke

      ok ich versuch es nochmal zu verdeutlichen.

      ich habe ein Array $data in welchem untern keys ( z.b. 23432_sdf_name , 234_sdf_fax , 234234_öfsdf_email_vorname etc. ) values gespeichert sind. Ich brauche zur weiteren verarbeitung nun die Values, welches sich hinter den keys mit den pattern ( *_name , *_vorname, *_nachname ) verbergen. Nur gibt es unter den Keys auch welche die "*_email_vorname" heißen , diese will ich zusätzlich rausfiltern.

      Kommentar


      • #4
        Alles nötige wurde Dir doch bereits genannt wo ist jetzt das Problem?

        https://eval.in/private/3716a9bbc69c55

        Kommentar


        • #5
          Gesucht wird hier eine "negative look-behind assertion", um mit einem regEx auszukommen. Ein Ausdruck wie hier _email welcher einen folgenden Ausdruck nicht vorausgehen darf.
          Auf die Schnelle nicht groß getestet:
          PHP-Code:
          $regEx '~(?<!_email)_(vorname|nachname|name)$~iu'
          Maxwill2000 : Bitte den Titel des Startbeitrages noch präzisieren, damit andere mit dem selben Problem das mal besser finden.

          Kommentar


          • #6
            Habt vielen Dank , ja das was jspit geschrieben hat habe ich gebraucht.

            Kommentar

            Lädt...
            X