За последние 24 часа нас посетили 20066 программистов и 1706 роботов. Сейчас ищут 1496 программистов ...

разбор ссылки

Тема в разделе "Регулярные выражения", создана пользователем jenya777777, 8 фев 2011.

  1. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    ПРи добавлении поста пользователем у него есть возможность добавить длинную ссылку, для этого я при помощи функции укорачиваю ее
    Код (Text):
    1.  
    2.  function shortlink($text) {
    3.        $text = preg_replace("/http:\/\/([^\/]+)[^\s]*/", "<a href='$0' class='tooltip' title='$0'>http://$1</a>", $text);
    4.        return $text;
    5.  }
    Пользователь пользуется редактором NicEdit и проблема в том, что он также может добавить картинку в пост, предварительно загрузив ее на хостинг imageshuck.us. И получается что картинка в посте имеет такой вид
    <img src="http://img508.imageshack.us/img508/7919/89179789.jpg" width="600">. Но т.к. мне приходится прогонять весь пост в поисках ссылок, он эту картинку тоже обрезает и делает короткой и картинка не показывается.
    Помогите с регуляркой, чтобы она не обрезала ссылки если имеется название imageshack.us

    PS после обрезки ссылка на изображение выглядит так:

    <img src="<a href='http://img508.imageshack.us/img508/7919/89179789.jpg"' class='tooltip' title='http://img508.imageshack.us/img508/7919/89179789.jpg"'>http://img508.imageshack.us</a>
     
  2. jenya777777

    jenya777777 Активный пользователь

    С нами с:
    16 мар 2010
    Сообщения:
    562
    Симпатии:
    0
    Сделал так, если кому интересно.
    Код (Text):
    1.  
    2.  function shortlink($text) {
    3.        $text = preg_replace("/[\s]+http:\/\/([^\/]+)[^\s]*/", "<a href='$0' class='tooltip' title='$0'>http://$1</a>", $text);
    4.        return $text;
    5.  }
    Работает. Ссылки укорачивает, а ссылки на картинки не трогает
     
  3. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    А зачем экранировать слэш? Специальные символы, это: ^, $, (, ), [, ], \, ., |, ?, *, +, их нужно экранировать.