За последние 24 часа нас посетили 19737 программистов и 1692 робота. Сейчас ищут 1959 программистов ...

preg_replace, замена всех выражений

Тема в разделе "Регулярные выражения", создана пользователем vvsh, 19 май 2009.

  1. vvsh

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

    С нами с:
    19 май 2009
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Беларусь, Минск
    Всем привет.
    Есть такое вот
    Код (Text):
    1. $body = "";
    2. $search = "#\[code=(html|php|css|js|sql)\](.*)\[/code\]#";
    3. $replace = "<code class='$1'>$2</code>";
    4. $body = preg_replace($search, $replace, $body);
    если в $body содержится
    Код (Text):
    1. [code=php]$s = "1";[ /code ]
    то заменяется на
    Код (Text):
    1. <code class='php'>$s = "1";</code>
    если
    Код (Text):
    1. [code=php]$s = "1";[ /code ]<br>[code=js]var s = "1";[ /code ]
    то на
    Код (Text):
    1. <code class='php'>$s = "1";[ /code ]<br>[code=html]var s = "1";</code>
    ([ /code ] без пробелов)

    как сделать так, чтобы во втором случае получалось
    Код (Text):
    1.  <code class='php'>$s = "1";</code><br><code class='js'>var s = "1";</code>
    заранее спасибо
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Когда же вы научитесь понимать, что жадные квантификаторы — это не прихоть разработчиков и не пустой блеф.

    PHP:
    1. <?php
    2.  
    3. $body = "";
    4. $search = "#\[code=(html|php|css|js|sql)\](.*?)\[/code\]#";
    5. $replace = "<code class='$1'>$2</code>";
    6. $body = preg_replace($search, $replace, $body);
    Кроме того, символ . не совпадает с началом новой строки.
     
  3. vvsh

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

    С нами с:
    19 май 2009
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Беларусь, Минск
    спасибо уже разобрался, дело в том, что php знаю, а вот с регулярками проблы.
     
  4. evilmind

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

    С нами с:
    1 июн 2009
    Сообщения:
    1
    Симпатии:
    0
    Господа, нуждаюсь в помощи. Уже не первый час бьюсь, толку 0.
    Есть страница, получаемая curl'ом
    в странице повторяется такой код
    Жирным выделены те значения, которые надо выцепить. В статике (каждая строка отдельно) значение получить удается, а вот при парсинге целой страницы - нет. Буду рад помощи.