preg_match oder lieber preg_match_all???

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

  • preg_match oder lieber preg_match_all???

    Hallo!
    Folgendes Problem: Ich hole aus meiner Datenbank die Nachnamen (als String!)
    dabei können verschiedene Schreibweisen vorkommen, die ich in einem Array speichern will und dann mit list() ausgebe. Es tauchen aber nur die ERSTEN Treffer auf. Wo liegt bitteschön mein Denkfehler?
    Mein Listing sieht bis jetzt so aus:

    PHP-Code:
    $check_name=array();
    $sql=mysql_query("SELECT * FROM database");
      while (
    $ds mysql_fetch_array($sql)){
       
    $id $ds["id"];
       
    $nname $ds["nname"]; 
        if (
    preg_match(('~(F|V|W)oh?(s|ss|ß|sch)g?e?ra(u|f|w|ff|v)e?n?~'), $nname$reg)){ 
    $check_name[]= $reg[0];  
       }
     }
    $zaehle array_count_values $check_name );
    echo
    '<table>';
    while ( list ( 
    $key$val ) = each $zaehle ) )
    {
     echo 
    '<tr><td>'.$key '</td><td> kommt ' $val ' mal vor.</td></tr>';
    }

    echo
    '</table>'

  • #2
    Beispieldaten?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      MySQL :: MySQL 5.1 Reference Manual :: 11.4.2 Regular Expressions

      Kommentar


      • #4
        Nachtrag

        OK, dann mal anders, denn ich will die Nachnamen ja nicht direkt aus SQL auslesen sondern aus dem PHP-String:
        PHP-Code:
        $check_name=array();
        $array=("Vosgerau oder Fohsgrau","Vosgrau (Fohsgrau)");
        foreach (
        $array as $nname){ 
            if (
        preg_match(('~(F|V|W)oh?(s|ss|ß|sch)g?e?ra(u|f|w|ff|v)e?n?~'), $nname$reg)){ 
        $check_name[]= $reg[0];  
           }
        }
        $zaehle array_count_values $check_name );
        echo
        '<table>';
        while ( list ( 
        $key$val ) = each $zaehle ) )
        {
         echo 
        '<tr><td>'.$key '</td><td> kommt ' $val ' mal vor.</td></tr>';
        }

        echo
        '</table>'
        Gefunden und in $check_name gespeichert werden sollen ALLE Treffer OHNE Klammern und Bindewörter.

        Kommentar


        • #5
          Hallo,

          dann auf jeden Fall preg_match_all. Das Ergebnis muss dann aber mit array_merge hinzugefügt werden.

          Gruß,

          Amica
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar

          Lädt...
          X