替换错误的 bbcode 颜色正则表达式 php



我有一些问题要做正则表达式....

我想用默认的 bbcode 替换错误的 bbcode 颜色。

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

我开始做一些事情,但我不明白如何在正则表达式中进行多个测试以及如何在 = 之后与不同的混合进行匹配

例如:

101正则表达式

非常感谢您的帮助:)

您必须匹配正确的颜色图案,并在图案不匹配时输入默认颜色。

$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]

如果您需要对正则表达式的解释,我可以在评论中解释

我想

通过包含正则表达式的六边形大小写和/i 参数来完成他的模式,使模式:

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

编辑:@sylvain:"我必须替换复杂的文本。我无法匹配一个所有 bbcode 代码"

那就去preg_replace吧。

Arh ..我看到了我问题的模棱两可.....

我希望错误的 bbcode 与正则表达式匹配。实际上,所有KO项目都将在=之后替换为#000000

 [color=#123456]  => KO
 [color=#]        => matched
 [color=]         => matched
 [color=#1234567] => matched
 [color=#12345]   => matched
 [color=lightgray]   => matched

最新更新