Snippets - Diskussionsthread

nur das ich das array erstmal durchlaufen muss weil ich folgende Struktur habe
PHP:
$array[0]=array(gruen=>"rot", blau=>"gelb");
$array[1]=array(magenta=>"cyan", schwarz=>"weiß");

und ich ja alle Schlüssel aus den Arrays brauche ;-)
 
Oh, hab die foreach-Schleife übersehen.. das ist btw. deine Formatierung schuld ;).

Und nebenbei finde ich es nicht sinnvoll, wenn jeder sub-Array eine andere Struktur hat. Aber das ist vermutlich auch Auslegungsache
 
hat es nicht aber ich hab es vorsichthalber mal hinzugefügt.

Wenn alle Subarrays gleich aufgebaut sind könnte man $arrkey auch mit array_keys(current($array)); auslesen
 
So hab das ganze nochmal Überarbeitet und inzwichen sieht das ganze so aus

PHP:
function insertArray($array, $table, $append=array(), $update=false){
        
        //Alle Schlüssel extrahieren
        $arrkeys=array();        
        foreach($array as $values)
            $arrkeys=array_merge($arrkeys, array_keys($values));
        if(!empty($append))
            $arrkeys=array_merge($arrkeys, array_keys($append));

        //Doppelte Schlüssel löschen
        $arrkeys=array_unique($arrkeys);

        //Jede Datenreihe durchgehen    
        foreach($array as $data){

            //Append an die Datenreihe anhängen
            $data=array_merge($data, $append);
            $temp2=array();

            //Jedes Element durchgehen
            foreach($arrkeys as $key){
                //Falls es sich nicht um eine Zahl handelt den Wert escapen
                if(!is_numeric($data[$key]))$temp2[]="'".mysql_real_escape_string($data[$key])."'";
                else $temp2[]=$data[$key];
            }

            //Datenreihe zusammensetzten
            $row[]="(".implode($temp2, ", ").")";
        }

        //Query zusammenbauen
        $query.=(($update)?"REPLACE":"INSERT")." INTO ".$this->prefix.$table."(".implode($arrkeys, ", ").") VALUES ".implode($row, ",\n").";";

        //Query abschicken
        return $this->query($query);
}
 
probier mal den _ aus der ersten eckigen Klammer in die dahinter zu rücken (ganz vorne oder hinten). Allerdings keine Ahnung obs das tut, wirklich Ahnung hab ich auch nicht..
 
probier mal den _ aus der ersten eckigen Klammer in die dahinter zu rücken (ganz vorne oder hinten). Allerdings keine Ahnung obs das tut, wirklich Ahnung hab ich auch nicht..

Das sollte funktionieren. Aber der Ausdruck sieht extra so geschrieben aus, dass nur maximal einmal ein _ hintereinander sein darf.

PHP:
    return preg_match("/^[a-z0-9]+([_\\.-]*[a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i", $mail);

*untested*

(Da sehe ich noch: Sollte \\. nicht \. ergeben? Weil dann matched die zweite eckige Klammer ja alles.. ??)
 
PHP:
    return preg_match("/^[a-z0-9]+([_\\.-]*[a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i", $mail);
Sind denn mehrere Punkte hintereinander erlaubt?

(Da sehe ich noch: Sollte \\. nicht \. ergeben? Weil dann matched die zweite eckige Klammer ja alles.. ??)
Hm, tut sie ja offensichtlich nicht, wenns bei nem __ nicht klappt. Hat mich aber auch verwirrt, ich ging davon aus, dass ich einfach keine Ahnung vom escapen habe bei perl regexps 8)
 
Was macht ihr? :hö: a.b.c@example.com und a__b..c@example.com sind doch auch gültig, oder ned?

Statt
Code:
[COLOR=#000000][COLOR=#dd0000]^[a-z0-9]+([_\\.-][a-z0-9]+)*@[/COLOR][/COLOR]
also
Code:
[COLOR=#000000][COLOR=#dd0000]^[a-z0-9]+[a-z0-9[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]_\\.-[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]]*@[/COLOR][/COLOR]
 
Weil ich wollte mal testen ob meine neue email mit ß Domain als gültig erkannt wird, und das wird sie :think: hab mich gefragt wo das ß her kommt :think:
 
Mit Sonderzeichen etc. is der Standard restriktiver, als die SMTP-Server es sind. Einige lassen dich vor dem @-Zeichen schreiben, was du willst und magst.

Auf der anderen Seite hatte ich schon Webseiten erlebt, die meine eMail-Adresse nicht angenommen haben, weil der Host 2 Punkte enthalten hat :evil:
 
Ich benutze die hier, sollte weitestgehend mit RFC 2822 konform gehen.

PHP:
$regex = '~([a-z0-9!#$%&\'*+/=?^_`{|}\~-]+(?:\.[a-z0-9!#$%&\'*+/=?^_`{|}\~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)~i';