Bepaal of tekst e-mailadres bevat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Guido  -

Guido -

20/01/2024 14:31:58
Quote Anchor link
Goedemiddag,

Ik wil bepalen of een blok tekst (de message body van een e-mail) een e-mailadres bevat. Daarvoor gebruik ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
preg_match("/\b[^\s]+@[^\s]+/", $mijn_tekst)


de bron is hier te vinden.

Werkt prima. Graag jullie mening, is dit een prima snippet?

Guido
 
PHP hulp

PHP hulp

12/12/2024 12:46:42
 
- Ariën  -
Beheerder

- Ariën -

20/01/2024 15:32:42
Quote Anchor link
Vertaald kom je uit op deze pattern.
Klik
 
Guido  -

Guido -

20/01/2024 18:23:38
Quote Anchor link
Bedankt, handige link voor mij.
Deze reguliere expressie zoekt dus alleen op de aanwezigheid van een @ met direct daarvoor en direct daarna tekst. Als je een meer nauwkeurige manier weet om de aanwezigheid van een e-mailadres te bepalen, laat het me weten.. :-)
 
- Ariën  -
Beheerder

- Ariën -

21/01/2024 00:47:58
Quote Anchor link
https://emailregex.com/ ;-)

Afbeelding
Gewijzigd op 21/01/2024 00:50:10 door - Ariën -
 
Guido  -

Guido -

21/01/2024 01:43:36
Quote Anchor link
Thanks! De Swift versie lijkt me wel wat, maar kun je me uitleggen wat de \ vóór de domein extensie doet?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}


Guido
 
- Ariën  -
Beheerder

- Ariën -

21/01/2024 05:44:38
Quote Anchor link
Die slash lijkt mij een fout.
 
Guido  -

Guido -

21/01/2024 11:00:57
Quote Anchor link
Een escaping karakter?

Iets anders, ik zie dat je een beheerder bent. Ik kan deze site via een onbeveiligde (http) verbinding bereiken, en inloggen. Wordt dit ooit gefixt?

Guido
 
- Ariën  -
Beheerder

- Ariën -

21/01/2024 11:51:28
Quote Anchor link
Guido - op 21/01/2024 11:00:57:
Een escaping karakter?

Iets anders, ik zie dat je een beheerder bent. Ik kan deze site via een onbeveiligde (http) verbinding bereiken, en inloggen. Wordt dit ooit gefixt?

Guido

Ik ga er even met Bas naar kijken.
 
Guido  -

Guido -

21/01/2024 12:05:03
Quote Anchor link
Op mijn PC is HTTPS geforceerd, op mijn iPhone kan ik de site nog bereiken met HTTP. Dat is wel vreemd.

Guido
 
- Ariën  -
Beheerder

- Ariën -

21/01/2024 12:07:51
Quote Anchor link
Ik ga het eens uitzoeken.
 
Ivo P

Ivo P

21/01/2024 21:09:37
Quote Anchor link
volgens mij pakt de regex

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}


ook een deel van http://username:[email protected] mee.
Maar hij laat weer heinz@köln.de liggen, vanwege de ö

Om van obscure varianten met een spatie in het deel voor de @ maar te zwijgen:

"ivo p"@phphulp.nl zou een valide adres moeten zijn.

ik zou hem zo benaderen:

gebruik preg_match om elk woord met een @ erin te vinden.
Deze "woorden" zou ik dan aan filter_var() voeren met FILTER_VALIDATE_EMAIL en PHP het moeilijke werk laten doen.

https://www.php.net/manual/en/filter.filters.validate.php
 
Guido  -

Guido -

22/01/2024 20:29:59
Quote Anchor link
Quote:
Maar hij laat weer heinz@köln.de liggen, vanwege de ö


Ik snap niet waarom hij dat e-mailadres doorlaat.. Want het deel wat ná @ staat bevat ook karakters die wél matchen en de voorwaarde is toch "one of" (zie Regexper). Kun je dat uitleggen?
Gewijzigd op 23/01/2024 09:27:22 door Guido -
 
Ivo P

Ivo P

23/01/2024 11:35:36
Quote Anchor link
[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}

en dan proberen te matchen met heinz@köln.de

Het stuk voor de @ is ok.
De @ zelf ook.

Daarna zoekt de regex naar 1 of meer karakters uit de reeks a-z0-9 een punt of een -

Daar vinden we er 1. namelijk de k.
De ö maakt geen deel uit van a-z.

Dus daar zou de match stoppen. Maar de regex wil ook nog een punt gevolgd door een extensie van 2 tot 64 karakters hebben.

Maar door de ö komt hij daar niet.

En toegegeven, de letters met diakrieten worden niet veel gebruikt in domeinnamen of emailadressen, maar technisch kan het wel.

Daarom zou ik het overlaten aan niet zelf geschreven tools.
 
Guido  -

Guido -

23/01/2024 20:14:47
Quote Anchor link
Hoi Ivo,

Bedankt voor je uitleg.
Dat die stopt omdat de ö er niet in voorkomt had ik echt niet verwacht, omdat andere karakters dus wel matchen. Ik ging ervan uit dat tenminste 1 karakter moet matchen. Maar goed, zo werkt het blijkbaar.

Guido
 
Adoptive Solution

Adoptive Solution

23/01/2024 21:50:20
Quote Anchor link
Eens kijken hoe dit forum omgaat met niet-latijnse tekensets.
En hoe browsers er mee omgaan.

https://en.wikipedia.org/wiki/??

https://en.wikipedia.org/wiki/.%D1%80%D1%84

The Cyrillic letters ?? stand for ?????????? ????????? (transliterated as Rossijskaja Federacija / Rossiyskaya Federatsiya), the Russian Federation. The domain has an ASCII representation of xn--p1ai derived as Punycode for use in the Domain Name System.

https://en.wikipedia.org/wiki/Punycode

Toevoeging op 23/01/2024 21:50:38:

Niet dus.
 
- Ariën  -
Beheerder

- Ariën -

23/01/2024 22:43:08
Quote Anchor link
Het forum gaat er niet lekker mee om, helaas.
Ik ga kijken of het eenvoudig te fixxen is.
 
Ivo P

Ivo P

24/01/2024 13:35:31
Quote Anchor link
Die bug op phphulp zit er pas een jaar of 10+ in...
 
Guido  -

Guido -

26/01/2024 12:17:53
Quote Anchor link
Hoi Ivo,

Quote:
Maar hij laat weer heinz@köln.de liggen, vanwege de ö


FILTER_VALIDATE_EMAIL laat dit (umlaud) ook doorgaan.

Guido
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.