gpt4 book ai didi

PHP/正则表达式 : simple regex for bbcode [s] or [strike] fails to work

转载 作者:行者123 更新时间:2023-12-04 06:40:57 25 4
gpt4 key购买 nike

对于一个愚蠢的 bbcode 解析器,我想将两个定义合二为一,我的原始定义是 preg_replace:

'#\[s\](.*?)\[/s\]#si', '<strike>\\1</strike>'

这有效,我希望用户能够使用 [s][strike]以这种格式启动文本,所以我很自然地添加了这样的东西,认为它会起作用:
'#\[(s|strike)\](.*?)\[/(s|strike)\]#si', '<strike>\\1</strike>'

不幸的是,这失败了,而不是你所期望的, [s][strike] (正确使用)制作: sstrike (我的 Markdown 是正确显示其真实外观的结果,无论里面有什么,它都会显示 s 或罢工)

为什么它用标签名称替换内部文本?我在 s|strike 周围添加括号是问题吗?我可能做错了这一切..

最佳答案

问题是您添加了两个新的正则表达式组,(s|strike)在开始标签和 (s|strike)在结束标记中。所以在你生成的代码中你会得到 sstrike .您只需使用正确的组号 2 即可解决此问题。 .

另一种方法是通过添加 ?: 使新组不引用。开始,但我想第一个解决方案更容易理解:

#\[(?:s|strike)\](.*?)\[/(?:s|strike)\]#si

关于PHP/正则表达式 : simple regex for bbcode [s] or [strike] fails to work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com