Заменить все слеши в определенных тегах

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

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

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    Помогите написать регулярку для замены всех слэшей в определенных тегах, например:
    HTML:
    <td class="started">one/two/three</td>
    нужно заменить на:
    HTML:
    <td class="started">one, two, three</td>
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    как то так

    PHP:
    if (preg_match ("/<td[^>]+>[^~]+?<\/td>/i"$str$rg))
      
    $str str_replace ("/"","$str);
     
  3. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    diavolic, так заменяются все слэши и в тегах в т.ч. <,td>. нужно чтобы только внутри тегов.
     
  4. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    PHP:
    <?
    echo 
    preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3"$str);
    ?>
     
    alexz15 нравится это.
  5. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    VandJ, спасибо, работает! А как сделать, если слэшей будет не три, а например два или четыре? Я пока что делаю так:
    PHP:
    $str '<td class="started">one/two/three</td><br>
    <td class="started">one /two/ three/four</td><br>
    <td class="started">one/ two</td>'
    ;

    $str preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3, \\4"$str);
    $str preg_replace("'(<td class=\"started\">.*?)\/(.*?)\/(.*?</td>)'","\\1, \\2, \\3"$str);
    $str preg_replace("'(<td class=\"started\">.*?)\/(.*?</td>)'","\\1, \\2"$str);

    echo 
    $str;
     
  6. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    Теперь не имеет значения, сколько слешей.
    PHP:
    <?
    $str '<td class="started">one/two/three</td><br> 
    <td class="started">one/two/three/four</td><br> 
    <td class="started">one/two</td>'
    ;
    function 
    zamena_slesha($matches
      {
      return 
    '<td class="started">'.str_replace("/"", ""$matches[1]").'</td>';
      }
    echo 
    preg_replace_callback("'<td class=\"started\">(.*?)</td>'","zamena_slesha"$str);
    ?>
     
    alexz15 нравится это.
Статус темы:
Закрыта.