我正在为论坛创建一些自定义 BBcode。我正在尝试正确使用正则表达式,但它已经困扰我好几个星期了。欢迎任何专家建议。
示例输入(一个非常基本的示例):
[quote=Bob]I like Candace. She is nice.[/quote]
Ashley Ryan Thomas
本质上,我想在 [user][/user] BBcode 中包含任何名称(来自指定列表)......当然,除了那些被引用的名称,因为这样做会导致一些可怕的解析错误。
所需的输出:
[quote=Bob]I like [user]Candace[/user]. She is nice.[/quote]
[user]Ashley[/user] [user]Ryan[/user] [user]Thomas[/user]
我当前的代码:
$searchArray = array(
'/(?i)([^=]|\b|\s|\/|\r|\n|\t|^)(Ashley|Bob|Candace|Ryan|Thomas)(\s|\r|\n|\t|,|\.(\b|\s|\.|$)|;|:|\'|"|-|!|\?|\)|\/|\[|$)/'
);
$replaceArray = array(
"\\1[user]\\2[/user]\\3"
);
$text = preg_replace($searchArray, $replaceArray, $input);
它目前生产的产品:
[quote=Bob]I like [user]Candace[/user]. She is nice.[/quote]
[user]Ashley[/user] Ryan [user]Thomas[/user]
请注意,Ryan 没有被 [user] 标签封装。另请注意,许多额外的正则表达式匹配字符是在论坛上出现时根据需要添加的,因此删除它们只会使其在其他情况下无法匹配(即禁止)。当然,除非您发现正则表达式本身存在明显错误,在这种情况下请务必指出。
不过,真的,任何帮助将不胜感激!谢谢你。