创建简单的 Markdown 类

发布于 2024-11-28 22:12:28 字数 322 浏览 0 评论 0原文

我目前正在开发一个集成了评论系统的系统,该系统在 Codeigniter 上运行,所以我希望创建一个 Markdown 库,但功能非常少。

我希望拥有的功能是

  • 自动链接
  • 粗体*bold*
  • 斜体_italic_

实际上就是这样,发布数据将在进入标记之前通过Codeigniter的XSS类运行 所以我的问题

是最好的方法是什么,我应该使用一个库并禁用某些功能,我应该从头开始构建它,如果是这样,我应该如何构建班级以及我应该考虑哪些事情。

Im currently working on a system that has a comment system integrated, the system is running on Codeigniter so im looking to create a markdown library but with really minimal features.

The features im looking to have is

  • Autolinking
  • Bold *bold*
  • Italic _italic_

And that's practically it, The post data will be run through Codeigniter's XSS Class before it goes to the mark down class

So my question is what's the best way to do this, should i be using a library out there and disabling certain features, should I build this from scratch, if so, how should i build the class and what things should I take into account.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夕嗳→ 2024-12-05 22:12:28

我最近遇到了类似的情况,我想支持某种标记(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);
}

I was in a similar situation recently, where I wanted to support some kind of markup (BB, Markdown, etc). It turns out nothing has been done with BBCode for about 100 years, and it's dead easy to write a regex parser for it (for well-formed markup at least) so i wrote a really bare bones function to do just that.

My version also includes images, codes, and color support as well as nested tags ([b][i]bold and italic[/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);
}
瘫痪情歌 2024-12-05 22:12:28

您可以从 PHP Markdown 类 开始吗?

CI 的那个。

如果我可以建议,您也可以尝试 MarkItUp 作为前端..

You can begin with PHP Markdown class ?

or the one for CI.

And If I may suggest, you can also try MarkItUp as front end..

独留℉清风醉 2024-12-05 22:12:28

对我来说,集成 Markdown 的最简单方法就是简单地

  • Michel Fortrin 中的 markdown.php 放入我的Application/helpers/ 文件夹,
  • 将其重命名为 markdown_helper.php
  • 使用 $this->load->helper('markdown'); 加载它

...以防万一有人 - 像我一样 - 再次偶然发现这个旧线程:)

For me the easiest way to integrate Markdown is by simply

  • putting markdown.php from Michel Fortrin into my Application/helpers/ folder,
  • rename it to markdown_helper.php
  • load it with $this->load->helper('markdown');

...just in case someone - like me - stumbles upon this old thread again :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文