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