У меня есть некоторые проблемы, чтобы сделать регулярное выражение ….
Я хотел бы заменить неправильный цвет bbcode на bbcode по умолчанию.
[color=#123456] => OK
[color=#] => KO
[color=] => KO
[color=#1234567] => KO
[color=#12345] => KO
Я начал что-то делать, но я не понимаю, как делать несколько тестов в регулярном выражении и как сравнивать сразу после сочетания = с разными
Например :
Большое спасибо за вашу помощь 🙂
Вы должны сопоставить правильный цветовой рисунок и установить цвет по умолчанию, если шаблон не соответствует.
$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, я могу объяснить это в комментарии
Я хотел бы завершить его шаблон, включив регистр hexa и аргумент / i для регулярного выражения, создав шаблон:
$pattern = "/\[color=#[0-9a-f]{6}\]/i";
редактировать: @sylvain: «Я должен заменить в сложном тексте. Я не могу сопоставить один на один весь код bbcode»
Пойти на preg_replace затем.
Арх .. я видел двусмысленность моего вопроса …..
Я хотел бы, чтобы неправильный bbcode совпадал с регулярным выражением. На самом деле все элементы КО будут заменены после = на # 000000
[color=#123456] => KO
[color=#] => matched
[color=] => matched
[color=#1234567] => matched
[color=#12345] => matched
[color=lightgray] => matched