• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

eMails auslesen

mo

Administrator
Teammitglied
Hi,
ich habe eine relativ grosse Textdatei (210 kb), in der wahllos verstreut
Email-Adressen stehen. Jetzt wollte ich diese eMail-Adressen mit eregi()
rausfiltern. So schaut mein Code aus:

<?
$fcontents = file( './mails.txt' );
while ( list( $line_num, $line ) = each( $fcontents ) ) {
echo "<b>Line $line_num:</b> " . htmlspecialchars( $line ) . "<br>\n";
while (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$", $line, $txt)) {
echo $txt[0]."<br>\n";
}
}
?>

Die zeilenweise Ausgabe klappt. Aber die eMail-Adressen werden nicht alleine angezeigt, sondern auch der restliche Müll..
Wer weiss Rat?

ciao,
Michael
 
Hi,

Das Array, das ereg(i) erzeugt hat den aufbau
$txt[0] =die ganze Zeile, in der das Objekt gefunden wurde
$txt[1]-[x]=die gefundenen Objekte.

also müßtest du
echo $txt[1]."<br>\n";
verwenden...

Außerdem ist
ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $line ,$txt)
AFAIK vollständiger...

CU
MichiS
 
Hi Michi,
danke für die Antwort. Mein Forum ist schneller als die PHP-Newsgroup :)
Aber leider gehts immer noch nicht.
Das Script schaut jetzt so aus:
<?
$fcontents = file( './mails.txt' );
$zaehler = "967062931"; //Timestamp 230800 - 22:37
while ( list( $line_num, $line ) = each( $fcontents ) ) {
$zaehler++;
echo "$zaehler Line $line_num: ";
if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $line ,$txt))
echo $txt[1]."<br>\n";
}
?>

Er gibt mir jetzt für jede Zeile einen Timestamp aus, aber die eMail-Adresse noch immer nicht.

ciao,
Michael
 
Michael schrieb:

if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $line ,$txt))
echo $txt[1]."<br>\n";

Hi nochmal,
Mein String ist ursprünglich dafür gedacht eMails auf ihre Gültigkeit zu überprüfen... Das ^ steht für Anfang der Zeile, das $ für Ende der Zeile.
Der Suchstring trifft also nur zu, wenn die eMail am anfang der Zeile beginnt und bis zum ende geht, d.h. allein in der Zeile steht.
Laß das ^am anfang und das $ am ende weg. Dann sollte es funktionieren...

CU
MichiS
 
und?

Hi,

habt ihr nun eine Lösung gefunden? Da ich so ein ähnliches Problem habe...nur muss das php sein?
Kann man das nicht auch mit JavaScript oder so machen, da ich das Dokument schon auf meiner Festplatte habe und so müsste ich ja Online gehen...

CU
Shadow
 
ja, das prob ist gelöst. mit php. mit javascript geht sowas nicht, du kannst die datei mit den emails schon nicht mal öffnen.
ciao,
mo
 
Im IE könnte man solche cvs-Dateien oder wie die nochmal heißen zumindest auslesen.
Ansonsten ist die Checkzeile ja fast das selbe.
 
weiss nicht, vielleicht ist es auch unpassend

hi michael
**********

vielleicht ist es unpassend, aber ich poste es trotzdem mal, vielleicht hilft es dir ja.

Ich habe ein Prog, das aus einer html, text,... datei alle Email Adressen fildter und diese dann schön geordnet ausgibt... wenn du interessiert bis, dann schreibe hier, maile mit (hupfer@web.de) oder per ICQ (36208528)

Ich hoffe, ich konnte dir helfen... wenn nicht, dann eben schade ;-) (würde dir auch gerne mal helfen, da mit dieses forum sehr viel hilft *g*)

grüsse
fabain hupfer
 
ist unterwegs

hatte das prog nicht mehr (zu meiner verwunderung). habe es aber wieder im i-net gefunden... es ist unterwegs ;-)

grüsse
fabain hupfer
 
Zurück
Oben