Замените неправильный цвет bbcode regex Переполнение стека

У меня есть некоторые проблемы, чтобы сделать регулярное выражение ….

Я хотел бы заменить неправильный цвет bbcode на bbcode по умолчанию.

[color=#123456]  => OK
[color=#]        => KO
[color=]         => KO
[color=#1234567] => KO
[color=#12345]   => KO

Я начал что-то делать, но я не понимаю, как делать несколько тестов в регулярном выражении и как сравнивать сразу после сочетания = с разными

Например :

101regex

Большое спасибо за вашу помощь 🙂

0

Решение

Вы должны сопоставить правильный цветовой рисунок и установить цвет по умолчанию, если шаблон не соответствует.

$color = '[color=toto]';
$default_color = '[color=#123456]';
$correct_pattern = '/\[color=#\d{6}\]/';

if(!preg_match($correct_pattern, $color, $matches)) {
$color = $default_color;
}

echo $color;

Этот код будет выводить

[color=#123456]

Если вам нужно объяснение на regExp, я могу объяснить это в комментарии

1

Другие решения

Я хотел бы завершить его шаблон, включив регистр hexa и аргумент / i для регулярного выражения, создав шаблон:

$pattern = "/\[color=#[0-9a-f]{6}\]/i";

редактировать: @sylvain: «Я должен заменить в сложном тексте. Я не могу сопоставить один на один весь код bbcode»

Пойти на preg_replace затем.

0

Арх .. я видел двусмысленность моего вопроса …..

Я хотел бы, чтобы неправильный bbcode совпадал с регулярным выражением. На самом деле все элементы КО будут заменены после = на # 000000

 [color=#123456]  => KO
[color=#]        => matched
[color=]         => matched
[color=#1234567] => matched
[color=#12345]   => matched
[color=lightgray]   => matched
0
По вопросам рекламы [email protected]