Регулярка

Red_Virus
На сайте с 27.11.2012
Offline
15
388

Доброго вечера уважаемые форумчане .

Возник вопрос по регулярным выражениям , прикрутил новый бб редактор к форме , все бы хорошо

но вот функция обработки бб кодов в html хромает маленько на цвете , дело в том что она подставляет в форме цвет нормально , но после обработки функцией не цепляет этот бб код

обрабатывается строка так

$bb[] = "#\{6}|[a-z]+)\](.*?)\[/color\]#si";
$html[] = "<span style=\"color: \\1\">\\2</span>"
$s = preg_replace($bb, $html, $s);

Если принудительно указываю цвет то обрабатывает нормально

$s = preg_replace("#\(.+)\[\/color\]#isU",'<span style="color:#FF0000">\\1</span>',$s);

В регулярках почти ничего не смыслю , хотелось бы узнать что не так в первой функции и можно ли ее исправить

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

$bb[] = "#\#[0-9A-F]{6}|[a-z]+)\](.*?)\[/color\]#si";
Возможно это вопросик может быть лишний(он инвертирует жадность, когда установлен флаг U, который у Вас в рабочем примере)
Либо проблема с решеткой. В регулярке она есть, а в примере, который Вы говорите, что работает - нету.
UPDATE: глянул внимательней. С решоткой все норм, не доглядел. Значит остается 1 вариант.

Подпись))
Red_Virus
На сайте с 27.11.2012
Offline
15
#2
Милованов Ю.С:
$bb[] = "#\#[0-9A-F]{6}|[a-z]+)\](.*?)\[/color\]#si";
Возможно это вопросик может быть лишний(он инвертирует жадность, когда установлен флаг U, который у Вас в рабочем примере)
Либо проблема с решеткой. В регулярке она есть, а в примере, который Вы говорите, что работает - нету.
UPDATE: глянул внимательней. С решоткой все норм, не доглядел. Значит остается 1 вариант.

просто убираю вопрос ? все равно в описание выводит не форматированый текст

но если сделать его не в hex а так то форматирует нормально. совсем уже запутался

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3


$s = "myColor";
$bb = "#\{6}|[a-z]+)\](.*)\[/color\]#si";
$html = "<span style=\"color:\\1\">\\2</span>";
$s = preg_replace($bb, $html, $s);
echo $s;

Не было еще точки с запятой. Вот это рабочий вариант на 100%. Во всяком случае у меня;)

Red_Virus
На сайте с 27.11.2012
Offline
15
#4
Милованов Ю.С:

$s = "myColor";
$bb = "#\{6}|[a-z]+)\](.*)\[/color\]#si";
$html = "<span style=\"color:\\1\">\\2</span>";
$s = preg_replace($bb, $html, $s);
echo $s;

Не было еще точки с запятой. Вот это рабочий вариант на 100%. Во всяком случае у меня;)

да спасибо конечно но так даже вашем варианте hex цвета он не в какую не хочет

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#5

$s = "[*color=#ff0000]myColor[*/color]";

Забыл про сами ББ коды форума. Звездочки уберите.

Если не получится - пишите в аську или скайп, гляну.

ЗЫ. скорей всего на вход приходят данные не соответствующие формату.

Red_Virus
На сайте с 27.11.2012
Offline
15
#6
Милованов Ю.С:
$s = "[*color=#ff0000]myColor[*/color]";
Забыл про сами ББ коды форума. Звездочки уберите.
Если не получится - пишите в аську или скайп, гляну.
ЗЫ. скорей всего на вход приходят данные не соответствующие формату.

Спасибо все заработало :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий