За последние 24 часа нас посетили 17638 программистов и 1720 роботов. Сейчас ищут 974 программиста ...

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

Тема в разделе "Прочие вопросы по PHP", создана пользователем Volga-WebRu, 14 июн 2008.

  1. Volga-WebRu

    Volga-WebRu Активный пользователь

    С нами с:
    13 мар 2008
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Россия, Волгоград
    Мне нада чтоб заменялось на <font style="color: #000000;"> и сохранялся цвет.
    я вот написал:
    Код (Text):
    1.  
    2. echo preg_replace("[color=([A-Za-z0-9#]+)]","<font style=\"color: $1;\">", "[color=#000000]");
    но выводит:
    Код (Text):
    1.  
    2. []
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    echo preg_replace("~\[color=([a-z0-9#]+)\]~is","<font style=\"color: $1;\">", "");

    Дело в том, что у вас не было делиметров (в моем примере это ~~ symbols). Модификатор i для регистронезависимости, s - для представления текста в одну строку. А спецсимволы, типа "[" (они же у Вас используются и для группировки символов) нужно экранировать.
     
  3. Volga-WebRu

    Volga-WebRu Активный пользователь

    С нами с:
    13 мар 2008
    Сообщения:
    10
    Симпатии:
    0
    Адрес:
    Россия, Волгоград
    Спасибо не только за пример правельного решения, а еще и за объяснение! :)
    и продолжая тему, еще один вопросик:
    вот:
    Код (Text):
    1. <?
    2. $text = "[code]Supermen+-*\"()[]&$., fgf?@№%^!``~
    ";
    echo preg_replace("~\[code\]([a-zA-Z0-9#_+*-|/\"\[\]\(\)&$., ?@№%^!\`\~]+)\[/code\]~is","$1", $text);
    ?>[/code]
    как сделать так чтоб такой знак: \ добавить.
    И он отображался при выводе