Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Заменить все вхождения http:// на ссылки
 
 автор: FiX   (27.08.2009 в 18:56)   письмо автору
 
 

Знаю, что много тем уже создавалось, но все-равно не получается сделать рабочий вариант.
В гостевой книге пользователи пишут сообщения. Там же оставляют ссылки на сайты новостей, изображения, и т.д. Необходимо текст

http://news.ru/page&etc сегодняшняя новость, или ссылка на картинку http://news.ru/images/img.jpg

заменялся на

<a href="http://news.ru/page&etc">http://news.ru/page&etc</a> сегодняшняя новость, или 
ссылка на картинку <a href="http://news.ru/images/img.jpg">http://news.ru/images/img.jpg</a>


Вот код:

$text = preg_replace('#|[^\]]http://([^\s\[]+)#i', ' <a target="_blank" title="Ссылка откроется в новом окне" href="/goaway/?url=http://\\1">\\1</a> ', $text);


В принципе, ссылки заменяет, но некорректно:
1) Если сразу же после ссылки есть <br /> то к концу ссылки приписывается <br />:
http://news.ru/img.jpg<br/>

2) Если ссылку разместить в самом начале сообщения, то она не заменяется.

  Ответить  
 
 автор: ........   (27.08.2009 в 20:36)
 
   для: FiX   (27.08.2009 в 18:56)
 

если правильно понял что недолжнобыть "]" перед http://
$text = preg_replace('#(?<!\])\bhttp://[^\s\[<]+#i',
' <a target="_blank" title="Ссылка откроется в новом окне" href="/goaway/?url=http://\\0">\\0</a> ',
$text);

  Ответить  
 
 автор: ...........   (27.08.2009 в 20:48)
 
   для: ........   (27.08.2009 в 20:36)
 

забыл убрать http , где
/?url=http://\\0">\\0</a> ',

  Ответить  
 
 автор: ......   (27.08.2009 в 20:53)
 
   для: ...........   (27.08.2009 в 20:48)
 

и применяйте htmlspecialchars() перед этим

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования