次のようなテキストの投稿を含む古い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」は「投稿ごとに」同じであるため、投稿は次のようになります(すべてのタグに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].
私はもともと、上記の「quote」インスタンスを処理するために同様の質問をここに投稿しましたが、これは実用的な解決策のように見えましたが、さらにテストすると、タグに含まれるIDが同じ投稿の別のタグ(つまり、上記で投稿した例)で使用すると、壊れます。
したがって、基本的に、上記のすべてを処理する正規表現ソリューションが必要です。