Toon posts:

[php] E-mailadressen filtreren uit bestand

Pagina: 1
Acties:
  • 376 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een willekeurig .txt(.doc,.csv) bestand met daarin tussen de de text een willekeurig aantal e-mail adressen die ik eruit wil choppen.

Hoe kan ik dit doen?

Ik lees het hele bestand in met file() en evt. sizeof()

Zijn hier al applicaties/scripten voor?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik vind wel een aantal topics erover maar die zijn niet toereikend vandaar nogmaals de vraag.

Het is dus een textbestand met hier en daar een door een spatie met de rest gescheiden e-mail adres met als syntax:

ewurweir@sad.com

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb hier een script voor geschreven..
Contact me op icq ff of stuur een mail naar larbor@home.nl

icq: 30866020

Acties:
  • 0 Henk 'm!

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 14-10 15:08

Martijn02

/* No Comment */

Je gaat toch geen spam versturen he ? :Y)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee, is voor backup applicatie.

Iemand nog ideeén / scripten?

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
rereregex

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
En wat heeft dat hier mee te maken :?

Ok, nog even verder in gaan op de vraag ;)
Je zult even wat meer informatie moeten geven over de context waarin je adressen staan. In zinnen, in HTML tags, compleet willekeurig/onbekend? Met een leuke regex is veel mogelijk, maar afhankelijk van de context van je adressen hoef je niet een echt ingewikkelde te gebruiken. Wanneer deze context echt onbekend is of alles kan zijn zul je een goede email regex nodig hebben en die kunnen vrij groot (call it ingewikkeld if you like) zijn :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het zijn gewoon normale email adressen die in een txt of html file staan. Die dienen als backup. Uit de twee bestanden moeten alle volledige e-mail adressen gefilterd worden.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Deze dienen uiteindelijk in een MYSQL db geplaatst te worden. !!!GEEN SPAM!!! :r

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

pseudo regex :P
code:
1
(1)(2)(3)

waar:
• 1 karakter wat een spacer, een begin van een regel of een ander non-emailadres character is
• 2 emailadres validatie
• 3 karakter wat een spacer, een einde van een regel of een ander non-emailadres character is

simpel zat toch :?

edit: even wat overzichtelijker opgeschreven

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
---ROBIN---: Het zijn gewoon normale email adressen die in een txt of html file staan. Die dienen als backup. Uit de twee bestanden moeten alle volledige e-mail adressen gefilterd worden.
Ik vroeg om meer informatie over de context waar de adressen zich in bevinden, wat je nu zegt wisten we eigenlijk al ;)
drm: pseudo regex :P
[..]
simpel zat toch :?
Euh... misschien. Misschien niet.

Mag een email adres een _ bevatten? Ja. Dus jij maakt een regex:
code:
1
/[0-9a-z_]+@[0-9a-z_]+\.[0-9a-z_]+/ig

Simpel zat ja. Maar als je als tekstbestand nu dit krijgt:
code:
1
he mijn adres is _martijn@nogwat.com_ dat je het ff weet!

Dan krijg je als match dus _martijn@nogwat.com_, immers, underscore mag in een email adres. Maar mag een email adres met een underscore beginnen? Nee. Wanneer je daar rekening mee houdt krijg je in dit geval al een betere match (de underscores horen er namelijk niet bij).
Maar als je je context van te voren al zo goed kent dat je zeker weet dat je email adressen niet tussen underscores zal staan hoef je daar geen rekening meer mee te houden.

Lullig voorbeeldje misschien, maar kennis over de context van je data is zooooo belangrijk bij het gebruik van regexen! Wanneer je bij het matchen van email adressen helemaal niets weet over je data, zul je dus een perfecte regex moeten gebruiken volgens de betreffende RFC. En dat is heel wat werk (in MRE staat een voorbeeldje van 6598 karakters, maar deze is volgens een verouderde RFC gemaakt, hoewel ik het zo snel niemand beter zie doen).

Wellicht is een regex als
code:
1
/.+@.+\..+/g

zelfs voldoende, ik weet het niet. Antwoord geven op de vraag is nu dus erg lastig, ik geef niet graag een regex van 6,5 duizend karakters terwijl het niet nodig is.

Acties:
  • 0 Henk 'm!

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Hij hoeft niet zo heel ingewikkeld te worden (de regexp)

Een emailadres mag beginnen met een letter of een cijfer dacht ik, en verder mag het gedeelte voor de @ ook - _ en . bevatten. Ik weet niet of het laatste teken vóór de @ ook een .- of _ mag zijn.

Na de @ hetzelfde alleen, dan zonder de _

dan een . en 2 of die letters

:)

Moet niet zo'n hele moeilijke worden, maar je mag het zelf uitzoeken :p

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
eamelink: Hij hoeft niet zo heel ingewikkeld te worden (de regexp)
[..]
Moet niet zo'n hele moeilijke worden, maar je mag het zelf uitzoeken :p
Lees jij werkelijk posts van anderen voor je post :?

Wat je nu beschrijft valideert dus bij lange na geen email adres. Kijk voor de grap eens in de betreffende RFC, die beschrijft namelijk een email adres (onderdeel daarvan is natuurlijk het domein).
Het ligt niet zo simpel als je hier zegt wanneer je het goed wilt doen ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Op zondag 11 november 2001 23:32 schreef tomato het volgende:

[..]

En wat heeft dat hier mee te maken :?
Just joking :)

Acties:
  • 0 Henk 'm!

  • tomato
  • Registratie: November 1999
  • Niet online
JunkyJaz: Just joking :)
Een smilie oid zou dat wellicht iets duidelijker maken ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

tomato:
Euh... misschien. Misschien niet.
(...)
Dan krijg je als match dus _martijn@nogwat.com_, immers, underscore mag in een email adres. Maar mag een email adres met een underscore beginnen? Nee.
(...)
kennis over de context van je data is zooooo belangrijk bij het gebruik van regexen!
Heb je opzich gelijk in.

Maar de context van de data, zoals ---ROBIN--- zei was:
Het is dus een textbestand met hier en daar een door een spatie met de rest gescheiden e-mailadres
Dan voldoet die van mij toch wel aardig, dacht ik zo.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • tomato
  • Registratie: November 1999
  • Niet online
drm:Maar de context van de data, zoals ---ROBIN--- zei was:

Het is dus een textbestand met hier en daar een door een spatie met de rest gescheiden e-mailadres

Dan voldoet die van mij toch wel aardig, dacht ik zo.
:o die zin had ik helemaal gemist |:(

Maarja, geldt nog steeds dat hij het ook over .doc, .csv en HTML bestanden heeft (waarvan het best logisch is dat er geen spaties om ieder adres staan)...

Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
tomato schreef op woensdag 14 november 2001 @ 17:19:
...Maar mag een email adres met een underscore beginnen? Nee. ...
Is dat zo?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Is dat een topickick van pakweg 14 jaar waard :? Is je google stuk? :X
Verder kan je natuurlijk makkelijk eens _foo@example.org door de vele validators halen (wel even kijken hoe betrouwbaar ze zijn / op waarde schatten).

[ Voor 43% gewijzigd door RobIII op 06-05-2015 19:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.