E-Mail Adressen TLD de filtern

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

  • E-Mail Adressen TLD de filtern

    Hallo,

    habe eine Datei die mit E-Mail Adressen, die mit verschiedene TLD sind. Nun wollte ich alle de rausfiltern, aber es will mir nicht so genau gelingen.

    emails.txt
    Die PHP-Datei
    PHP-Code:
    function readFiles($filename=null$tld='de')
    {
       
    $testHTML "";
       
       if (
    is_dir($filename))
          
    dir($filename " is not a Valid File");
             
       
    $f file($filename);
       
       
    $testHTML .= $filename "<br>\n";
       
    $testHTML .= sizeof($f) . " adresses<br>\n";
       
    $testHTML .= str_repeat("+"70) . "<br>\n";
             
       foreach (
    $f AS $val)
       {
          if (
    emailFilter($val$tld))
          {
             echo 
    "Ja<br>";
             
    $testHTML .= $val "<br>\n";
          } else echo 
    "nein<br>";
       }

       
    $testHTML .= "<p>";

       return 
    $testHTML;
    }

    function 
    emailFilter($strEmail=null$tld='de')
    {
       
    $emailTld substr($strEmailstrrpos($strEmail'.')+1);
       
       echo 
    "($emailTld == $tld)<br>\n";
       return (
    $emailTld == $tld)?true:false;
    }

    echo 
    readFiles('emails.txt'); 

    Die Funktion emailFilter sollte die E-Mail-Adresse nach den TLD überprüffen lautet diese de soll true ausgeben werden falls nicht dann eben false. Tut es aber nicht. Es wird immer false zurückgegeben...? Ich kann leider den Fehler nicht erkennen.

    cheers
    Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
    PHP Sicherheit
    PHPUnit[1-2]
    Professionelle Softwareentwicklung mit PHP 5
    Professionelle PHP 5-Programmierung

  • #2
    Ich glaube, dass sich das mit RegExp sehr viel leichter lösen lässt. Allerdings habe ich mich noch nicht soweit mit ihnen beschäftigt, als dass ich dir nun einen Lösungsvorschlag anbieten könnte. Guck mal in den Tutorials bei php-resource, da ist eine gute Einleitung. Ich denk mal, das ist in 10 Minuten gelesen und in 2 Minuten gescriptet =)

    Kommentar


    • #3
      da er eh durch eine schleife geht, kann man auch ereg() verwenden.

      PHP-Code:
      if (ereg('.de$'$mail))
         echo 
      '.de addi'
      (nur beispiel)
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        zwei ideen:
        versuch doch erstmal
        strrpos($strEmail, '.')+1 eine zeile vorher in eine eigene var zu packen also so:

        PHP-Code:
        function emailFilter($strEmail=null$tld='de')
        {
           
        $stelle=strrpos($strEmail'.')+1;
           
        $emailTld substr($strEmail$stelle);
           
           echo 
        "($emailTld == $tld)<br>\n";
           return (
        $emailTld == $tld)?true:false;

        habs schon erlebt, dass das addieren einer variable in direkter benutzung nicht so gern gesehen wird.

        oder einfacher:

        PHP-Code:
        function emailFilter($strEmail=null$tld='de')
        {
           
        $emailTld substr($strEmail, -2);
           
           echo 
        "($emailTld == $tld)<br>\n";
           return (
        $emailTld == $tld)?true:false;

        falls der wert -2 auch mal -3 sein soll, uebergib ihn doch auch im funktionsaufruf mit...

        hoffe es hilft
        **********
        arkos
        **********

        Kommentar


        • #5
          Hallo,

          erstmal danke für die schnellen Atnworten. Mir ist aufgefallen daß das Probelem ein anderses ist.

          Beide Vorschläge, die hier gemacht worden sind, haben funktioniert. Ich glaube das ich es mit RegExp lösen werden.
          PHP-Code:
          foreach ($f AS $val)
              {
                  
          #if (emailFilter($val, $tld))
                  
          if (preg_match('/.de$/'$val))
                  {
                      
          $testHTML .= $val "<br>\n";
                  }
              } 
          Nun zurück zu meinem Problem . Die besagte Datei beinhaltet 10.000 E-Mail Adressen irgendwie kommt das Skript bei dieser grössenordnung nicht mehr mit...? D.h. bei diesem Beispiel
          msinc@mergetiel.de
          asinc@usiet.net
          sasdclair@007.com
          asdfd@sadf.tw
          msdfka@lestsi.hut.de
          msdfka@lessti.hut.fi
          fsadfet03@iola.ie
          msinet04@iole.ie
          nochaml@kdfk.de
          wird alles richtg ausgegeben. Aber nicht bei einer Datei mit 10.000 einträgen. Zwei Frage habe ich dazu.[list=1][*]Warum?[*]Wie kann ich das Probelm lösen ohne die Datei jetzt in 10 Teile zu zerschneiden?[/list=1]

          System:
          Windows XP Pro
          AMD XP 1800
          512 MB
          Apache 1.3.X
          PHP 4.3.2

          cheers
          Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
          PHP Sicherheit
          PHPUnit[1-2]
          Professionelle Softwareentwicklung mit PHP 5
          Professionelle PHP 5-Programmierung

          Kommentar


          • #6
            in dem du die eMails in eine Datenabnk packts und sie dann von dort aus ausliest.
            *winks*
            Gilbert
            ------------------------------------------------
            Hilfe für eine Vielzahl von Problemen!!!
            http://www.1st-rootserver.de/

            Kommentar


            • #7
              Original geschrieben von Wotan
              in dem du die eMails in eine Datenabnk packts und sie dann von dort aus ausliest.
              Ich versuche gerade die E-Mail Adressen via PHP-Skript in die einer MySQL-Datenbanktabelle zu füllen Gibt es denn eine andere möglichkeit.
              Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
              PHP Sicherheit
              PHPUnit[1-2]
              Professionelle Softwareentwicklung mit PHP 5
              Professionelle PHP 5-Programmierung

              Kommentar


              • #8
                Du kannst dir mit Hilfe von PHPMyAdmin die text-Dateien in eine Datenbank eintragen lassen.
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #9
                  ... und falls kein phpmyadmin vorhanden ist, schau dir den mysql-befehl "load data infile" an. mit dem kannst du dateien in die db laden.
                  **********
                  arkos
                  **********

                  Kommentar

                  Lädt...
                  X