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查询用作自定义标记(再次,可以工作,但只显示第一条记录),如果需要的话。
感谢。非常感谢任何帮助或建议。
答案 0 :(得分:0)
从正则表达式中删除U
模式修饰符。它inverts
惰性运算符的含义并使其成为greedy
。如果您想支持UTF-8
,请使用u
(小写)
$body = preg_replace('!\[b\](.*?)\[\/b\]!uei', "''.b('$1','$2').''", $body, -1);