【发布时间】:2009-12-03 22:10:53
【问题描述】:
目前我正在解析 bbcode 服务器端,但我想像本网站一样显示预览。
如果我使用 ajax 处理 bbcode 服务器端,它有点滞后,所以我想在客户端做它,只显示预览。
你们知道任何用 javascript 编写的 bbcode 解析器吗?
【问题讨论】:
标签: javascript parsing bbcode
目前我正在解析 bbcode 服务器端,但我想像本网站一样显示预览。
如果我使用 ajax 处理 bbcode 服务器端,它有点滞后,所以我想在客户端做它,只显示预览。
你们知道任何用 javascript 编写的 bbcode 解析器吗?
【问题讨论】:
标签: javascript parsing bbcode
我遇到了同样的问题,所以我自己写了。支持 BBCode -> AST Array -> 任何类型的标记,现在支持 HTML 和 React。并且有插件和预设支持
【讨论】:
有点晚了,问题肯定已经回答了。但是,如果您仍然愿意接受建议,并且还没有花时间将指定的解析器从 C# 转换为 JavaScript,我已经编写了一个解析器(最初使用 PHP),我将自己 [2] 转换为 JavaScript。它可以在bitbucket 在 3-clause BSD 许可证下获得。解析器似乎相当快,但我没有对其速度进行任何分析。
它在某些方面可能不像其他可能的项目那样灵活,但它确实允许定义您自己的代码(“bb-code”与否,具有相当多的属性),并且也都包含在一个文件。这不是一个简单的查找和替换解析器,也不是基于正则表达式。
如果您对此感兴趣,它可能会使您不必转换其他库。从技术上讲,我是一个相对“未知”的人,但这就是 JS/OSS 的伟大之处:您可以查看源代码,看看我做了什么。
[2] 因此,还有一些剩余的“兼容性函数”,但我重写了一些可用的本地等效函数。
【讨论】:
我个人没有使用过任何 Javascript BBcode 解析器,但前两个 Google 结果(bbcodejs 和 this blog post)似乎很弱。前者似乎只支持简单的查找和替换,而后者似乎内置了预设的 BBcode,所以如果您选择该解决方案,您可能需要稍微破解一下。
您最好的选择可能是推出自己的解决方案(可能基于此处的两个链接之一进行工作),或者只使用 AJAX 并继续前进。这可能是确保预览准确的最佳方式,而且预览不必在每次按键时都是实时的,无论如何;发送请求之前的延迟是可以接受的。
【讨论】:
eval("/"+obj[k].tmatch[tm]+"/gi.test(tag[tm])" 的东西吗?