Bepaal of tekst e-mailadres bevat
Ik wil bepalen of een blok tekst (de message body van een e-mail) een e-mailadres bevat. Daarvoor gebruik ik:
de bron is hier te vinden.
Werkt prima. Graag jullie mening, is dit een prima snippet?
Guido
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.. :-)
Die slash lijkt mij een fout.
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
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
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
Ik ga het eens uitzoeken.
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
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 -
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.
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
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.
Ik ga kijken of het eenvoudig te fixxen is.
Die bug op phphulp zit er pas een jaar of 10+ in...
Quote:
Maar hij laat weer heinz@köln.de liggen, vanwege de ö
FILTER_VALIDATE_EMAIL laat dit (umlaud) ook doorgaan.
Guido