Autor Zpráva
4li3n
Profil
Dobrý den,

potřebuji upravit tento kód:
preg_match_all('/([-a-z0-9._]+)@([-a-z0-9._]+).([a-z])/',strtolower($emaily), $matches);


tak aby mi nebral retezce typu

necoblabla@seznam.cz,b

samosebou mi tam vadí ta čárka a poslední znak "b", který se bere z pokračujícího řetězce, poraďte prosím jak toto ošetřit.

Předem děkuji, potýkám se tady s tím už nějakou dobu :)
Radek9
Profil
4li3n:
Na vašem místě bych zkusil [-a-z0-9._] nahradit za [\-a-z0-9\._]. Nevím jestli to pomůže, ale myslím, že tyto znaky se mají escapovat.
4li3n
Profil
Tak jsem zkusil a nepomohlo, zjistil jsem, že počet písmen na konci za doménou a čárkou je ovlivněn tímto

'/([-a-z0-9._]+)@([-a-z0-9._]+).([a-z])/'
=vypíše za čárkou jen jedno písmeno
'/([-a-z0-9._]+)@([-a-z0-9._]+).([a-z]{2,4})/'
=vypíše 4 písmena za čárkou...
4li3n
Profil
Jak to tak bývá,

řešení jsem našel po chvíli co už jsem to nevydržel a napsal sem, takže jsem použil toto:

preg_match_all('/([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})/',strtolower($emaily), $matches);
mckay
Profil
4li3n:
Díky, mimochodem - neděláš náhodou na nějakém indexbotovi? :) O něco podobného jsem se už nedávno pokoušel ;).
4li3n
Profil
Ahoj,
ještě to má pár much, musím to odladit, na indexbotovi nedělám, tohle je čistě pro ruční použití, ale aby z toho nebyla prace na den, tak jsem potřeboval tuhle výpomoc :)
DoubleThink
Profil *
Tohle by měl být regulár podle zjednodušených pravidel RFC 2822 (z knihovny RegexBuddy):
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Majkl578
Profil
Od pohledu bych řekl, že problém dělala ta poslední neescapovaná tečka. Doporučuji se podívat na znaky, které je třeba escapovat, jsou vypsány u funkce preg_quote.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0