За последние 24 часа нас посетили 74156 программистов и 10157 роботов. Сейчас ищет 2171 программист ...

Помощь в составлении регулярного выражения

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

  1. anapkin

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

    С нами с:
    18 дек 2008
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Анапа
    Здравствуйте! Есть некоторая задача, а с составлением регулярного выражения совсем туго. Если не трудно - помогите пожалуйста. Задача такая:

    Есть строка $message В ней могут быть ссылки вида:

    Код (Text):
    1. <a id="click_anp" href="http://site.ru" class="postLink">Text</a>
    И

    Код (Text):
    1. <a id="click_anp" href="http://site.ru/uploads/pictures/jpg/img.jpg" class="postLink"><var class="postImg" title="http://site.ru/uploads/pictures/thumbnails/th_img.jpg">&#10;</var></a>
    Мне нужно убрать все id="click_anp" из строки $message, где урл не на картинку.

    Как это сделать? Заранее спасибо за помощь. Регулярные выражения пока тяжеловато даются :((
     
  2. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    Код (Text):
    1. $txt1 = '<a id="click_anp" href="http://site.ru" class="postLink">Text</a>';
    2. $txt2 = '<a id="click_anp" href="http://site.ru/uploads/pictures/jpg/img.jpg" class="postLink"><var class="postImg" title="http://site.ru/uploads/pictures/thumbnails/th_img.jpg">&#10;</var></a>';
    3.  
    4. print regexp($txt1)."\n".regexp($txt2)."\n";
    5.  
    6. function regexp($txt){
    7.     $patt = '/^(<a id="click_anp") (.*)>((.*)class="postImg"(.*))<\/a>$/';
    8.     $rep = '<a ${2}>${3}</a>';
    9.     $txt1 = preg_replace($patt, $rep, $txt);
    10.     return $txt1;
    11. }
     
  3. anapkin

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

    С нами с:
    18 дек 2008
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Анапа
    Большое спасибо! Только регулярка убирает не то, что нужно. Решил подойти по-другому, что и лучше будет. В базе удалю все id="click_anp" и добавлять этот id при каждом запросе картинки динамически, с помощью Вашего кода.

    Код (Text):
    1. function regexp($txt){
    2.    $patt = '/^(<a*) (.*)>((.*)class="postImg"(.*))<\/a>$/';
    3.    $rep = '<a id="click_anp" ${2}>${3}</a>';
    4.    $txt1 = preg_replace($patt, $rep, $txt);
    5.    return $txt1;
    6. }
    Регулярные выражения это чета страшное совсем, но в последнее время часто приходится сталкиваться и придется их все-таки выучить. Большое спасибо за помощь!
     
  4. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    А, да точно.
    Вариант