Php 带有preg_replace的自定义标记仅限于1

Php 带有preg_replace的自定义标记仅限于1,php,function,preg-replace,Php,Function,Preg Replace,PHP函数: function b($text) { $body="<b>$text</b>"; return $body; } function replaceTags($body) { $body = preg_replace('!\[b](.*?)\[\/b\]!Uei', "''.b('$1','$2').''", $body, -1); return $body; } *Code:* [b]This is

PHP函数:

function b($text) {    
  $body="<b>$text</b>";
  return $body; 
}
function replaceTags($body) {    
  $body = preg_replace('!\[b](.*?)\[\/b\]!Uei', "''.b('$1','$2').''", $body, -1);    
  return $body; 
}    
*Code:* [b]This is Hi.[/b] Hello world. [b]This is Hi2.[/b]    
*Output:* **This is Hi.[/b] Hello world. [b]This is Hi2.**
代码是有效的。。。在某种程度上。显然,每次都只限于第一次。当我复制代码时,我不小心弄坏了它,将它插入到其他代码中,并以粗体显示内部标记

示例:

function b($text) {    
  $body="<b>$text</b>";
  return $body; 
}
function replaceTags($body) {    
  $body = preg_replace('!\[b](.*?)\[\/b\]!Uei', "''.b('$1','$2').''", $body, -1);    
  return $body; 
}    
*Code:* [b]This is Hi.[/b] Hello world. [b]This is Hi2.[/b]    
*Output:* **This is Hi.[/b] Hello world. [b]This is Hi2.**
我不熟悉使用preg\u replace。我觉得这个图案有点不对劲,或者可能遗漏了什么。这就是为什么它只显示第一个实例。我还尝试了MySQL查询,它也仅限于一行

我试图为用户端使用一个简单的标记,但是如果需要的话,我想使用MySQL查询作为自定义标记(同样有效,但只显示第一条记录)


谢谢。非常感谢您的帮助或建议。

从正则表达式中删除
U
模式修饰符。它
惰性运算符的含义倒置,使其成为
贪婪的
。如果要支持
UTF-8
,请使用
u
(小写)


缩进4个空格或突出显示和ctl-k以作为代码块的格式,这样HTML标记就不会被吃掉:)啊,谢谢。我不想在这里问问题。我总是把它作为获得答案的资源。我会记下来的。谢谢太棒了!现在很有魅力。我就知道这是我一直在看的东西。非常感谢!你太棒了。