Stackoverflows WMD 系统 - 我的输入在哪里变成 HTML?

发布于 2024-07-13 05:22:50 字数 255 浏览 8 评论 0原文

我在文本区域中的输入在什么阶段从原始文本变为 HTML? 例如,假设我缩进 4 个空格

like this

,那么 WMD Showdown.js 将在我输入的文本区域下方正确呈现它。但是文本区域实际上仍然包含

    like this

PHP 服务器端是否负责将 showdown.js 所做的所有相同内容翻译为在 SoF 数据库中永久为 HTML?

At what stage does my input in the textarea change from being this raw text, and become HTML?
For example, say I indent 4 spaces

like this

Then the WMD Showdown.js will render it properly below this textarea I type in. But the text area still literally contains

    like this

So is PHP server side responsible for translating all the same things the showdown.js does to permanently be HTML in the SoF Database?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听风吹 2024-07-20 05:22:50

这里还有一些关于此的其他帖子,但基本上它的工作原理是这样的。 或者至少我在我的网站上使用 WMD 是这样做的; 如果您有兴趣查看我的 WMD 实现,请参阅我的个人资料。

  1. 用户在客户端输入 Markdown,showdown.js 在浏览器中实时运行(纯客户端 JavaScript;无 AJAX 或类似内容),为用户提供预览。
  2. 然后,当用户发布到服务器时,WMD 发送 Markdown(不过您必须配置 WMD 才能执行此操作;默认情况下 WMD 发送 HTML)。
  3. 在服务器端运行 showdown.js 将 Markdown 转换为 HTML。 理论上,您可以使用其他方法,但尝试在服务器上获得用户在客户端上看到的相同转换是有意义的,而不是您想要在服务器端执行的任何 HTML 标记过滤。
  4. 正如刚才提到的,您需要执行适当的 HTML 标记过滤以避免跨站点脚本 (XSS) 问题。 这既重要又不平凡,所以要小心。
  5. 将 Markdown 和 HTML 保存在数据库中 - Markdown 是因为如果用户想要编辑他们的帖子,您需要向他们提供 Markdown 和 HTML,这样您就不必在每次显示答案时将 Markdown 转换为 HTML。

这里有一些相关的帖子。

There are some other posts here about this, but basically it works like this. Or at least this is how I do it on my website using WMD; see my profile if you're interested in checking out my WMD implementation.

  1. User enters the Markdown on the client, and showdown.js runs in real time in the browser (pure client-side JavaScript; no AJAX or anything like that) to give the user the preview.
  2. Then when the user posts to the server, WMD sends the Markdown (you have to configure WMD to do this though; by default WMD sends HTML).
  3. Run showdown.js server-side to convert the Markdown to HTML. In theory you could use some other method but it makes sense to try to get the same transformation on the server that the user sees on the client, other than any HTML tag filtering you want to do server-side.
  4. As just noted, you'll need to do appropriate HTML tag filtering to avoid cross-site scripting (XSS) issues. This is both important and nontrivial, so be careful.
  5. Save both the Markdown and the HTML in the database—the Markdown because if users want to edit their posts, you want to give them the Markdown, and the HTML so you don't have to transform Markdown to HTML every time you display answers.

Here are some related posts.

以可爱出名 2024-07-20 05:22:50

首先,StackOverflow 是基于 ASP.NET 构建的,但是本质上,富文本框中的字符会来回翻译。

Well first of all StackOverflow is built on ASP.NET, but yes essentially the characters in the rich text box gets translated back and forth.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文