本文介绍了bbcode unparser regex帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我具有此功能来解析bbcode-> html:
I have this function to parse bbcode -> html:
$this->text = preg_replace(array(
'/\[b\](.*?)\[\/b\]/ms',
'/\[i\](.*?)\[\/i\]/ms',
'/\[u\](.*?)\[\/u\]/ms',
'/\[img\](.*?)\[\/img\]/ms',
'/\[email\](.*?)\[\/email\]/ms',
'/\[url\="?(.*?)"?\](.*?)\[\/url\]/ms',
'/\[size\="?(.*?)"?\](.*?)\[\/size\]/ms',
'/\[youtube\](.*?)\[\/youtube\]/ms',
'/\[color\="?(.*?)"?\](.*?)\[\/color\]/ms',
'/\[quote](.*?)\[\/quote\]/ms',
'/\[list\=(.*?)\](.*?)\[\/list\]/ms',
'/\[list\](.*?)\[\/list\]/ms',
'/\[\*\]\s?(.*?)\n/ms'
),array(
'<strong>\1</strong>',
'<em>\1</em>',
'<u>\1</u>',
'<img src="\1" alt="\1" />',
'<a href="mailto:\1">\1</a>',
'<a href="\1">\2</a>',
'<span style="font-size:\1%">\2</span>',
'<object width="450" height="350"><param name="movie" value="\1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="\1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="350"></embed></object>',
'<span style="color:\1">\2</span>',
'<blockquote>\1</blockquote>',
'<ol start="\1">\2</ol>',
'<ul>\1</ul>',
'<li>\1</li>'
),$original);
问题是,如何像html-> bbcode这样解析呢?
Problem is, how to unparse this, like html -> bbcode?
我的正则表达式技能很差:(
My regex skills are poor :(
谢谢.
推荐答案
不要.
相反,请同时存储原始未解析的文本和已处理解析的文本.是的,这使存储需求增加了一倍,但也使盲目地变得容易:
Instead, store both the original unparsed text and the processed parsed text. Yes, this doubles the storage requirement, but it also makes it blindingly easy to:
- 允许用户编辑原始文件而无需解析出BBCode
- 再次允许对其他用户帖子的引用,而不进行分析
- 更改每个BBCode生成的HTML(只需重新解析每个帖子)
- 将BBCode引擎向下切换(同样,只需重新解析每个帖子)
这篇关于bbcode unparser regex帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!