Регулярка на добавление класса в изображение

Тема в разделе "PHP", создана пользователем NetStranger, 30 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. NetStranger

    NetStranger Постоялец

    Регистр.:
    16 сен 2008
    Сообщения:
    124
    Симпатии:
    1
    Помогите составить функцию по замене ссылок на изображения в тексте статьи с
    <a href='/adasd/sadasd'><img src='/sdfsdf/sf.jpg'></a>
    на
    <a href='/adasd/sadasd' class='thickbox'><img src='/sdfsdf/sf.jpg'></a>
    Но нужно не забыть что только для изображений, чтобы простые ссылки не менялись. Вот у меня есть шаблон на изменение внешних ссылок чтобы добавлялось target='_blank' .

    Код:
    $host = str_replace('www.', '', getEnv('HTTP_HOST'));
        $host = str_replace('.', '\.', $host);
        $string = preg_replace('/href="?(http:\/\/(?!(www\.|)'.$host.')([^">\s]*))/ie',
                    "'href=\"\$1' . '\"  target=\"_blank'", $string);
        return $string;

    А для картинок, не могу сообразить((( хелп плиз
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    попробуйте так
    PHP:
    $page_body preg_replace('/(<a[^>]+href=\'[^\']+\')([^>]*><img[^>+]src=\'[^\']+\.jpg\'><\/a>)/si'"\\1 class='thickbox' \\2"$page_body);
     
    NetStranger нравится это.
  3. informix

    informix Писатель

    Регистр.:
    3 апр 2008
    Сообщения:
    4
    Симпатии:
    1
    я бы сделал так

    PHP:
    $page_body preg_replace('/(<a[^>]+href=[\'"][^\']+[\'"])([^>]*><img[^>+]src=[\'"][^\']+\.jpg[\'"]><\/a>)/si'"\\1 class='thickbox' \\2"$page_body);  
    ковычки могут быть и двойные
     
    NetStranger нравится это.
  4. NetStranger

    NetStranger Постоялец

    Регистр.:
    16 сен 2008
    Сообщения:
    124
    Симпатии:
    1
    спасибо! то что надо, а теперь можете еще помоч, надо как то заставить чтобы они не перекликались эти две регулярки, а то получается что в картинку добавляется приставка если это картинка со внешней ссылкой
    Код:
     $query[0]['text'] = preg_replace('/href="?(http:\/\/(?!(www\.|)'.$host.')([^">\s]*))/si',
                    "'href=\"/away.php?to=\\1\"  target=\"_blank'", $query[0]['text']);
    и
    Код:
    $query[0]['text'] = preg_replace('/(<a[^>]+href=[\'"][^\']+[\'"])([^>]*><img[^>]+src=[\'"][^\']+\.(JPG)|(jpg)|(PNG)|(png)[\'"][^>]+\/><\/a>)/si', "\\1 class='thickbox' \\2", $query[0]['text']);
     
     
Статус темы:
Закрыта.