Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Совпадение "не слово" перед регуляркой
Форумы портала PHP.SU » PHP » Регулярные выражения » Совпадение "не слово" перед регуляркой

Страниц (1): [1]
 

1. Esigns - 20 Января, 2015 - 14:51:58 - перейти к сообщению
Есть регулярка, которая находит ссылки в тексте:
/((http|https|ftp|ftps|www)([:\/\/]|[\.])[^\s<]+[^\s\.,\!\?:;")<\]])/u
Нужно добавить функционал, чтобы она не находила ссылки прописанные в теге <a>.
Пример:
Цитата:
произвольный текст и какие-то теги <a href="http://forum.php.su">http://forum.php.su</a>
произвольный текст http://forum.php.su111

Должно найти только вторую ссылку: http://forum.php.su111

Т.е нужно поправить регулярку так, чтобы она не трогала ссылки, если перед ней есть надпись href= (это я так вижу)
Буду очень признателен за любую помощь.
2. GoDr - 20 Января, 2015 - 20:34:04 - перейти к сообщению
а может проще сначала вырезать все ссылки вместе с тегами? Просто думаю что сложное условие + большой текст даст "тормоза"
3. andatr - 24 Января, 2015 - 18:39:27 - перейти к сообщению
(?<!href=")((http|https|ftp|ftps|www)([:\/\/]|[\.])((?!\<\/a>).)+?\s)

 

Powered by ExBB FM 1.0 RC1