Php regex删除带有atributes的bbcode标记

Php regex删除带有atributes的bbcode标记,php,regex,preg-replace,bbcode,Php,Regex,Preg Replace,Bbcode,我有很多bbcode标签,它们有phpbb属性(5位数的值——假设文本颜色或其他)。它们在文本中看起来像这样: This is [b:31747]bold[/b:31747] text and so is [b:17171]this[/b:17171]. 我无法找到一个正则表达式,它可以找到括号+b+冒号+任何5位数字+结束括号的组合,并让我用相应的html替换它。使用php的preg_replace()函数,如果有区别的话。这应该适用于任何类型标记的开始标记和结束标记: $string =

我有很多bbcode标签,它们有phpbb属性(5位数的值——假设文本颜色或其他)。它们在文本中看起来像这样:

This is [b:31747]bold[/b:31747] text and so is [b:17171]this[/b:17171].

我无法找到一个正则表达式,它可以找到
括号+b+冒号+任何5位数字+结束括号的组合,并让我用相应的html替换它。使用php的preg_replace()函数,如果有区别的话。

这应该适用于任何类型标记的开始标记和结束标记:

$string = preg_replace("/\[(\/?[a-zA-Z]+):[\d]{5}\]/is", "<$1>", $string);
$string=preg\u replace(“/\[(\/?[a-zA-Z]+):[\d]{5}\]/is“,”,$string);

您需要的正则表达式是:

\[/?b:\d{5}]

这将取代粗体、下划线和斜体标记

$new_text = preg_replace('~\[(/?[bui]):\d+\]~is', '<$1>', $text);
echo $new_text; // This is <b>bold</b> text and so is <b>this</b>.
$new\u text=preg\u replace('~\[(/?[bui]):\d+\]~is',''.$text);
echo$new_text;//这是粗体文本,这也是。

是否仅删除开始和结束标记?或者您也希望删除内容?保留内容,用相应的html替换标记。d前面的\是缺少的成分。一旦你有了一个好的答案,你应该“勾选”它。这让每个人都知道你的问题/问题已经解决了(并在应该得到表扬的地方给予了表扬)。对我来说仍然太精确了,我最终使用了:
preg\u replace(“/\[(\/?[^\[\]]+):[a-z0-9]+\]/is“,“[$1]”,$string)
preg_replace("/\[\/?b:[0-9]*?\]/","","[b:17171]this[/b:17171]");