Пишу регулярное выражение для замены в тексте e-mail адресов на ссылки. Не работает

Leonid

PHP? нет, не слышал...
Пишу регулярное выражение для замены в тексте e-mail адресов на ссылки. Не работает

Подскажите, как написать регулярное выражение для замены в тексте всех e-mail адресов на соответствующие ссылки.

Конструкция

$text2=preg_replace("^[a-z0-9\._\-]+@[a-z0-9\._\-]+\.[a-z]{2,4} *\$",'<a href="mailto:\\0">\\0</a>',$text);

не работает. Облазил весь форум и статьи, не нашел примера...
 

Leonid

PHP? нет, не слышал...
Статьи.. Например Рег. выражения ч. 1 и 2....
 

Фанат

oncle terrible
Команда форума
а если без реплейса - а просто сначала только находить - работает?
 

Leonid

PHP? нет, не слышал...
Само выражение я взял из функции проверки корректности e-mail (Нашел на форуме)
Эта функция работает
 

Leonid

PHP? нет, не слышал...
function validate_email($email_address) {
if (preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/i", $email_address)) {
return true; }
else { return false; }
}
 

Фанат

oncle terrible
Команда форума
почему шаблон в этой функции отличается от того, который у тебя?
 

Leonid

PHP? нет, не слышал...
Да я пробовал оба варианта... Даже еще и другие...
 

Фанат

oncle terrible
Команда форума
попробуй ещё

-~{}~ 03.06.05 16:08:

ты читал, в этих статьях, что означают символы ^ и $?
 

impossible

Новичок
вообщем, не допонял ты то, что читал...и взял кусок кода и зачем-то поменял
 

Leonid

PHP? нет, не слышал...
Ктати, убрал ^. заработало !


$text=preg_replace("/[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}$/i",'<a href="mailto:\\0">\\0</a>',$emails);

Без a-z тоже почему-то работает

А что такое /i в конце? не понятно.
 
Сверху