preg_match oder lieber preg_match_all???

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


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

      Comment


      • #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.

        Comment


        • #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]

          Comment

          Working...
          X