Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Последовательность символов как единая конструкция


Автор: barcelona 26.4.2010, 12:25
Здравствуйте!
Стоит задача вырезать из кода все e-mail-ы, которые не находятся в атрибуте href тега a (другими словами, перед которыми не стоит mailto:)
Первоначальное регулярное выражение:
Код

/(?<!mailto\:)([a-z\.]+@[a-z\.]+)/i 

Оговорюст сразу, что шаблон регулярного выражения здесь весьма приблизительный, чисто для примера.
Подобное регулярное выражение работает следующим образом: оно у строк с mailto вырезает первую букву, а всё остальное выводит. Я думаю, что регулярному выражению нужно как-то дать понять, что конструкцию 
Код

([a-z\.]+@[a-z\.]+)

нужно воспринимать не посимвольно, а всю вместе, и что перед этой конструкцией не может быть mailto.
Что скажете? 

Автор: SickFxck 26.4.2010, 13:31
Код

$pattern = '/(?<!mailto:|[a-z\\d.-])[a-z\\d.-]+@[a-z\\d.-]+/i';

Автор: barcelona 26.4.2010, 17:21
SickFxck, спасибо за идею!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)