我目前正在开发一个集成了评论系统的系统,该系统在 Codeigniter 上运行,因此我希望创建一个 Markdown 库,但功能非常少。
我希望拥有的功能是
- 自动链接
- 粗体
*粗体*
- 斜体
_italic_
实际上就是这样,发布数据将在进入 Markdown 类之前通过 Codeigniter 的 XSS 类运行
所以我的问题是什么是最好的方法,我应该使用那里的库并禁用某些功能,我应该从头开始构建它吗?如果是,我应该如何构建类以及我应该考虑哪些事项。
最佳答案
我最近遇到了类似的情况,我想支持某种标记(BB、Markdown 等)。事实证明,大约 100 年来 BBCode 没有做任何事情,而且为它编写一个正则表达式解析器非常容易(至少对于格式良好的标记)所以我写了一个非常简单的函数来做到这一点。
我的版本还包括图像、代码和颜色支持以及嵌套标签([b][i]粗体和斜体[/i][/b]
)。
function parseBBCode($string){
$search = array(
'/\[b\](.*?)\[\/b\]/',
'/\[i\](.*?)\[\/i\]/',
'/\[u\](.*?)\[\/u\]/',
'/\[img\](.*?)\[\/img\]/',
'/\[url\=(.*?)\](.*?)\[\/url\]/',
'/\[code\](.*?)\[\/code\]/',
'/\[color\=(.*?)\](.*?)\[\/color\]/'
);
$replace = array(
'<strong>\\1</strong>',
'<em>\\1</em>',
'<u>\\1</u>',
'<img src="\\1">',
'<a href="\\1" target="_blank">\\2</a>',
'<code>\\1</code>',
'<span style="color:\\1;">\\2</span>'
);
$new = preg_replace($search, $replace, $string);
return nl2br($new);
}
关于php - 创建简单的 Markdown 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986349/