RegExp.Patterns.php
define('TEXY_EMAIL', '[a-z0-9.+_-]+@[a-z0-9.+_-]+\.[a-z]{2,}'); // name@exaple.com
Zkus si otestovat rychlost tohodle výrazu na následujícím vzorku (a on nemusí být ani tak dlouhý):
str_repeat('abc_def', 5000)
Kdybys ve výrazu omezil počet znaků, myslím že se zpracování velmi zrychlí. Na mém formátovači bylo po podobné úpravě zrychlení obrovské, vlastně to do té doby byl nejpomalejší článek.
Bohužel už nemám zdroj, ale max. délka e-mailové adresy má být 64 + 1 + 255 (64=uživatelská část, 1=zavináč, 255=doména). Zároveň nejdelší top-level domény jsou šestiznakové. Když se tahle pravidla spojí, mělo by to dát cosi jako:
define('TEXY_EMAIL', '[a-z0-9.+_-]{1,64}@[a-z0-9.+_-]{1,252}\.[a-z]{2,6}'); // name@exaple.com
252 znaků = 255 – 3 (proto, že se nepočítá top-level doména na konci, která bude mít s tečkou nejméně tři znaky)
Offline
Dobrý tip, díky!
Offline
odvarko: A jak je to potom s doménami třetího řádu?
Offline
Acci psal: A jak je to potom s doménami třetího řádu?
Nuže, domény třetího řádu se mají zrovnatak vtěsnat do těch 255 znaků. To jsem si domyslel a věřím že je to správně.
Cituji RFC 2821, 4.5.3.1 Size limits and minimums
local-part The maximum total length of a user name or other local-part is 64 characters. domain The maximum total length of a domain name or number is 255 characters.
Offline
define('TEXY_EMAIL', '[a-z0-9.+_-]{1,64}@[a-z0-9.+_-]{1,252}\.[a-z]{2,6}'); // name@exaple.com
This regexp is true even for emails like …___-----_@._-._-._-._-._-._-.zzzyyy
Isn't it an insanity?
Editoval markus (3. 10. 2007 15:02)
Offline
This regexp is true even for emails like …___-----_@._-._-._-._-._-._-.zzzyyy Isn't it an insanity?
This seems rather like validation, and e-mail validation is (IMHO) not the goal of Texy. Handling just absolutely valid e-mails claims a long (and slow) regular expression. It is possible, of course, to make the regexp more and more complex, but when is the best time to say stop? There are thousands of awfully long regexps just for „strict“ e-mail matching, but I don't think it is necessary to build such ones into Texy. Let David correct me if I'am wrong.
Offline
Reklama: Školení PHP | Magento