【问题标题】:BBCode parser without Regex? [closed]没有正则表达式的 BBCode 解析器? [关闭]
【发布时间】:2011-05-25 17:37:03
【问题描述】:

我正在寻找 Javascript 或 PHP 中的 BBCode 解析器,而无需使用 Regex。谁能给我推荐一个好的?

【问题讨论】:

  • 为什么要避免使用正则表达式? (速度?)
  • 因为我不只是想替换标签,我还想对标签之间的内容做一点。你对我有什么建议吗?
  • “我也想对标签之间的内容做一点”preg_replace_callback() 非常适合这个。如果您能给我们一个具体的例子来说明您正在尝试做什么,我们可以为您提供更具体的建议。

标签: php javascript parsing bbcode


【解决方案1】:

推荐使用正则。

其他解决方案:

function bb_parse($str)
{
    return str_replace(array('[b]', '[/b]'), array('<strong>', '</strong>'), $str);
}

这可能会破坏解析,因为错误关闭的标签最终会导致内容被 HTML 标签包裹而没有关闭。

【讨论】:

【解决方案2】:

有一个PECL extension for bbcode。您需要查看how to install PECL extensions 才能使用它。

【讨论】:

  • 我认为 PECL 扩展在我的几个测试中出现了段错误,因此请谨慎操作。
【解决方案3】:

Zend 解析器可能是您正在寻找的 http://framework.zend.com/manual/en/zend.markup.parsers.html

不幸的是,我发现它是我评估过的 BBCode 解析器中功能最少的:当遇到格式错误的标记 ([b] asdf [/ wops I forgot to close my tag) 时,它倾向于丢弃第一个格式错误的标记之后的所有内容。其他 bbcode 解析器在忽略不良标记方面做得更好。

【讨论】:

    【解决方案4】:

    所以我知道你说没有正则表达式,但我最近用 JavaScript 编写了一个 BBCode 解析器,我相信它解决了你的问题,因为它不是简单的查找和替换,它让你可以访问标签内的内容。你可以在这里看到它的演示:

    http://patorjk.com/bbcode-previewer/

    并在此处获取源并写下来:

    http://patorjk.com/blog/2011/05/07/extendible-bbcode-parser-in-javascript/

    【讨论】:

      【解决方案5】:

      我最近用javascript写了一个bbcode解析器。

      它能做什么:

      1. 将BBcode字符串转换为HTML字符串;
      2. 将 HTML 元素转换为 BBCode 字符串;
      3. 自动更正 BBCode 字符串;

      查看演示:UBBParser

      【讨论】:

        【解决方案6】:

        如果您可以安装 PECL 扩展,您将能够使用BBCode functions

        【讨论】:

          猜你喜欢
          • 2015-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多