1

PHP函数:

function b($text) {    
  $body="<b>$text</b>";
  return $body; 
}

Preg_Replace:

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_replace。我认为该模式略有偏差或可能遗漏了一些东西。这就是为什么它只显示第一个实例。我也尝试过使用 MySQL 查询,并且也仅限于一行。

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

谢谢。非常感谢任何帮助或建议。

4

1 回答 1

0

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

$body = preg_replace('!\[b\](.*?)\[\/b\]!uei', "''.b('$1','$2').''", $body, -1); 
于 2012-11-08T02:05:26.687 回答