Регулярка img -> a

Тема в разделе "Как сделать...", создана пользователем Горбушка, 5 апр 2013.

Статус темы:
Закрыта.
  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.199
    Симпатии:
    2.221
    Требуется заменить все картинки в HTML тексте на ссылки на них в формате:
    HTML:
    <a href="$url">$title$img_name</a>
    Тег img может содержать всё, что угодно, что поддерживается веб-стандартами в произвольном порядке. Так там может быть class, title, alt, style и т.д., но обязательно содержат src="url" Все теги начинаются с <img, заканчиваются на />
    Надо заменить тег img и всё его содержимое на ссылку без сохранения стилей, альтов и т.д.

    Условно, весь текст уже содержится в переменной. $title известен. $img_name могу получить сам, обрезанием ссылки на картинку по /. Для меня проблема в ссылке и в замене по всему тексту...

    Нужна регулярка =) Обработку можно делать в столько этапов, во сколько нужно. Не принципиально наличие 1 регулярки. Пусть это будет хоть 10 - лишь бы работало.

    Вроде подробно расписал.

    Заранее спасибо.
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    558
    Код:
      $title = '  титл  ';
     
    function myReaplace($m){
    global $title;
      // $img_name = 'тут название делаешь';
      $img_name = basename($m[1]);
        return '<a href="'.$m[1].'">'.$title.$img_name.'</a>';
       
    }
    $test ='<img style="" src="http://yandex.ru/img1.jpg" />
    <img ololo src="http://yandex.ru/img2.jpg"/>
    <img asdsad222 src="http://yandex.ru/img3.jpg" asdsadsad />
    ';
     
    //echo preg_replace_callback('~<img.*?src=([\'"])?(.*?)(\\1| ).*?/>~', 'myReaplace', $test);
    echo preg_replace_callback('~<img.*?src="(.*?)".*?/>~', 'myReaplace', $test); 
    это под тз подходит?
     
    latteo и Горбушка нравится это.
Статус темы:
Закрыта.