我有一个包含大量旧 phpBB 数据的数据库,其中包含带有以下文本的帖子:
[b:522f1e2c15]bold[/b:522f1e2c15]
[i:522f1e2c15]italic[/i:522f1e2c15]
[u:522f1e2c15]underline[/u:522f1e2c15]
[img:522f1e2c15]http://www.mysite.com/myimage.jpg[/img:522f1e2c15]
[quote:522f1e2c15="Mr Smith"]quoted text by Mr Smith[/quote:522f1e2c15]
[quote="Mr Smith"]quoted text by Mr Smith[/quote]
我正在将这些数据迁移到一个新系统中,而这些标签在我来渲染它们时都需要进行操作,因此它们变为:
<b>bold</b>
<i>italic</i>
<u>underline</u>
<img src="http://www.mysite.com/myimage.jpg" />
<div><h4>Posted by Mr Smith</h4>quoted text by Mr Smith
<div><h4>Posted by Mr Smith</h4>quoted text by Mr Smith
在大多数情况下,出现在原始 phpBB 标签中的“id”与“per post”相同,因此帖子可能如下所示(所有标签都包含 id '522f1e2c15'):
This is [b:522f1e2c15]bold[/b:522f1e2c15] and this is [i:522f1e2c15]italic[/i:522f1e2c15].
但是,我还需要在同一个帖子中满足从一个标签到下一个标签的不同的 id,即
This is [b:123f1e2c15]bold[/b:123f1e2c15] and this is [i:522f1e2c15]italic[/i:522f1e2c15].
我还需要能够处理这些标签的嵌套实例,例如,带有一些斜体标签文本的粗体标签文本,即
This is [b:522f1e2c15]bold and [i:522f1e2c15]this is bold italic[/i:522f1e2c15][/b:522f1e2c15].
我最初在这里发布了一个类似的问题,专门用于处理上述的“引用”实例,它的回答似乎是一个可行的解决方案,但通过进一步测试,我注意到如果标签中包含的 id 是在同一篇文章的另一个标签中使用(即我上面发布的示例),然后它会中断。
所以基本上我需要一个处理上述所有问题的正则表达式解决方案。