Regexp для извлечения адреса mailto: address

Я хотел бы reg exp, который может взять блок строки, и найти строки, соответствующие формату:

<a href="mailto:x@x.com">....</a> 

И для всех строк, соответствующих этому формату, он будет извлекать адрес электронной почты, найденный после mailto: Есть предположения?

Это необходимо для внутреннего приложения, а не для каких-либо спамерских целей!

Если вы хотите соответствовать всему:

 $r = '`\<a([^>]+)href\=\"mailto\:([^">]+)\"([^>]*)\>(.*?)\<\/a\>`ism'; preg_match_all($r,$html, $matches, PREG_SET_ORDER); 

К фазе и шортеру это:

 $r = '`\<a([^>]+)href\=\"mailto\:([^">]+)\"([^>]*)\>`ism'; preg_match_all($r,$html, $matches, PREG_SET_ORDER); 

Вторая соответствующая группа будет независимо от ее электронной почты.

Пример:

 $html ='<div><a href="mailto:test@live.com">test</a></div>'; $r = '`\<a([^>]+)href\=\"mailto\:([^">]+)\"([^>]*)\>(.*?)\<\/a\>`ism'; preg_match_all($r,$html, $matches, PREG_SET_ORDER); var_dump($matches); 

Вывод:

 array(1) { [0]=> array(5) { [0]=> string(39) "test" [1]=> string(1) " " [2]=> string(13) "test@live.com" [3]=> string(0) "" [4]=> string(4) "test" } } 

На regexp.info есть много разных опций

Один из примеров:

 \b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[AZ]{2,4}\b 

« mailto: » тривиально, чтобы добавить к этому.

 /(mailto:)(.+)(\")/ 

Вторая соответствующая группа будет адресом электронной почты.

Вы можете работать с внутренним PHP-фильтром http://us3.php.net/manual/en/book.filter.php

(у них есть тот, который специально предназначен для проверки или дезинфекции электронной почты -> FILTER_VALIDATE_EMAIL)

поздравил