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. Brothersssddsss - 17 Марта, 2010 - 11:05:18 - перейти к сообщению
Нужен скрипт замены ссылок т.е адреса заменить на ссылки
Например есть адреса:

http://www[dot]name[dot]ru или http://name[dot]net или http://www[dot]name[dot]com и [teg:url]http://www.name.ru|Текст[url:teg]

Нужно чтобы первые три он заменил на:

<a href="http://www.name.ru">http://www.name.ru</a>
<a href="http://name.net">http://name.net</a>
<a href="http://www.name.com">http://www.name.com</a>

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

Например при замене этого:

[teg:url]http://www.name.ru|Текст[url:teg]

должно получится:

<a href="http://www.name.ru">Ссылка</a>

Нужно 2 рег. выражения, помогите пожалуйста.
2. Champion - 17 Марта, 2010 - 11:15:12 - перейти к сообщению
preg_replace('/(?<!\[teg:url\])(http|ftp)(:\/\/[\w.\/%-]+)/i', '<a href="\1\2">\1\2</a>', $src)
Примерно так для тех, у которых нет [teg:url]
Ну а у которых есть - ?<! заменить на ?<=.
И вызывать приведенный preg_replace раньше, чем с ?<=. Вот.
3. Brothersssddsss - 17 Марта, 2010 - 14:11:28 - перейти к сообщению
Спасибо помогло

 

Powered by ExBB FM 1.0 RC1