2011-05-25 100 views
5

我正在寻找一个Javascript或PHP中的BBCode解析器,而无需使用正则表达式。有人可以给我一个好的建议吗?没有正则表达式的BBCode解析器?

+2

你为什么要避开正则表达式? (速度?) – tofutim 2011-05-25 17:38:39

+3

因为我不只是想替换标签,我还想对标签之间的内容做一点点处理。你有什么建议吗? – Teiv 2011-05-25 18:11:54

+0

“我也想对标签之间的内容做一点点调整,''preg_replace_callback()'对此非常有用。如果你能给我们一个你想要做什么的可靠例子,我们可以给你更具体的建议。 – 2011-05-26 22:10:51

回答

6

建议使用正则表达式。

其他解决方案:

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

这可以打破因接错结束标签解析可以结束了内容被包裹着的HTML标记,而不关闭。

+0

Ehm,BB是一种递归格式,就像HTML一样。因此,我援引小马:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2012-04-20 08:40:29

1

Zend的解析器可能是你在找什么http://framework.zend.com/manual/en/zend.markup.parsers.html

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

0

我最近写在JavaScript中的bbcode解析器。

它可以做什么:

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

检查演示:UBBParser