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

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

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

 

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

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

тема: превратить ссылку http://site.com в html тег <a href='http://site.com'>http://site.com</a>
 
 автор: skinny   (03.02.2009 в 16:41)   письмо автору
 
 

требуется превратить ссылку
http://site.com

в html тег
<a href='http://site.com'>http://site.com</a>
вроде бы всё получилось при помощи отакой функции
$text = preg_replace('#(.?)[^\[\S*\]]http://(\S*)#si', '<a target="_blank" href="http://\\2">\\2</a>', $text);

но если перед ссылкой чётное количество пробелов или 0 то замена не происходит
а если перед ссылкой слово + 1 пробел то слово склеивается со ссылкой
если слово + 2 пробела то ссылка не заменяется
если слово + 3 пробела то всё норм
и так далее

  Ответить  
 
 автор: Trianon   (03.02.2009 в 16:47)   письмо автору
 
   для: skinny   (03.02.2009 в 16:41)
 

сделайте шаблон попроще :)

  Ответить  
 
 автор: skinny   (03.02.2009 в 16:56)   письмо автору
 
   для: Trianon   (03.02.2009 в 16:47)
 

это как?
тут дело не в сложности шаблона
а в том што количество начальных пробелов влияет на замену

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:03)   письмо автору
 
   для: skinny   (03.02.2009 в 16:56)
 

это потому, что начальные пробелы захватываются шаблоном.
а preg_replace меняет текст, попавший в шаблон, от # до #

  Ответить  
 
 автор: skinny   (03.02.2009 в 17:12)   письмо автору
 
   для: skinny   (03.02.2009 в 16:41)
 

ну и как с этим бороться?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:19)   письмо автору
 
   для: skinny   (03.02.2009 в 17:12)
 

(.?)[^\[\S*\]]

ЗАвисит от того, с какой целью это включалось.

  Ответить  
 
 автор: skinny   (03.02.2009 в 17:26)   письмо автору
 
   для: Trianon   (03.02.2009 в 17:19)
 

штобы не обрабатывались строки типа
[img]http://sait.com/img.png[/img]

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:35)   письмо автору
 
   для: skinny   (03.02.2009 в 17:26)
 

О... терапефто...

  Ответить  
 
 автор: AcidTrash   (03.02.2009 в 21:52)   письмо автору
 
   для: skinny   (03.02.2009 в 17:26)
 

Шаманстство
$text = preg_replace('#[^\]]http://([^\s\[]+)#i', ' <a target="_blank" href="http://\\1">\\1</a> ', $text);

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

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