Мне нужно получить адрес электронной почты от привязки с атрибутом mailto с регулярным выражением.
этот шаблон: (.*)<a\s(.*?)(.*)\s*href\=['"]mailto:([-a-z0-9_]+)@([a-z0-9-]+).([a-z]+)['"]>(.*)</a>(.*)
Работает в тренере регулярных выражений, но не работает с PHP.
Код:
preg_match("'(.*)<a (.*?)(.*) *href\=['\"]mailto:([-a-z0-9_]+)@([a-z0-9-]+).([a-z]+)['\"]>(.*)</a>(.*)'si", "<a href=\"mailto:[email protected]\"">Some email</a>", $matches);
print_r($matches);
Так почему же это не работает в php?
+
в качестве символа в свой класс символов :([-a-z0-9_]+), потому что некоторые люди используют их для фильтрации триггеров в адресах электронной почты, например, [email protected] - person Keng   schedule 23.11.2010.*
приведут к ужасной производительности. - person Gumbo   schedule 23.11.2010.*$
сделал бы это? в основном все до конца строки? - person Keng   schedule 23.11.2010hell.o\@[email protected]
недействителен (как для\
, так и для@
). Но"hell.o@world"@example.com
действителен. - person Gumbo   schedule 23.11.2010"
будет закодировано в атрибуте HTML. - person bcosca   schedule 23.11.2010<a href='"foo bar"@example.com'>
в порядке. - person Gumbo   schedule 23.11.2010<a href="<?php echo $email; ?>">
столкнется с проблемами, если$email='"hell.o@world"@example.com';
- person bcosca   schedule 23.11.2010