不使用正则表达式的BBCode解析器?

5

我正在寻找一款Javascript或PHP的BBCode解析器,不需要使用正则表达式。有人能推荐一个好的吗?


2
你为什么避免使用正则表达式?(速度问题?) - tofutim
3
因为我不仅想替换标签,还想对标签之间的内容进行一些修改。你有任何建议吗? - Teiv
1
“我也想在标签之间处理一些内容”,preg_replace_callback()非常适合这种情况。如果您能给我们一个具体的例子,我们可以给您更具体的建议。 - Frank Farmer
6个回答

6

建议使用正则表达式。

其他解决方案:

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

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


嗯,BB是一种递归格式,就像HTML一样。因此,我调用了小马:https://dev59.com/X3I-5IYBdhLWcg3wq6do - Prof. Falken

2

1
我相信PECL扩展在我的几个测试中出现了段错误,因此请谨慎操作。 - Frank Farmer

1

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

不幸的是,我发现它是我评估的BBCode解析器中最不实用的:当遇到格式不正确的标记([b] asdf [/ wops我忘记关闭我的标记)时,它倾向于丢弃第一个格式不正确标记后的所有内容。其他BBCode解析器在忽略错误标记方面做得更好。


0

0

我最近用JavaScript编写了一个BBCode解析器。

它可以做到以下几点:

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

查看演示:UBBParser


-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接