如何防止 HTML textarea 转换诸如 > 之类的特殊符号?

luk*_*nig 2 html javascript

HTML<textarea>环境转换表示特殊符号的字符序列,例如

&gt;
Run Code Online (Sandbox Code Playgroud)

进入相应的符号:

>
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试构建一个代码编辑器,它应该以逐字逐字的方式接收用户输入。问题是,如果用户&gt;在编辑器中键入并编译代码,<textarea>则重新加载并在此过程中转换字符。

这是一个 MWE:

<!doctype html>
<html>
  <head>
  </head>  

<body>
    <textarea>
        &lsquo;
        &rsquo;
        &sbquo;
        &ldquo;
        &rdquo;
        &bdquo;
        &dagger;
        &Dagger;
    </textarea>
</html>
Run Code Online (Sandbox Code Playgroud)

当页面加载时,textarea 编辑器中的所有内容都会被转换。

转义所有&符号可能是一种选择(如此处建议:如何在 textarea 中显示 <html>),但感觉好像这不是真正正确的做法。(难道我不需要考虑更多的特殊情况,例如 HTML 标签等吗??)

是否有“推荐”的方式在 HTML 中实现代码编辑器?

我试过CodeMirror,但问题仍然存在。

Que*_*tin 5

转义所有 & 符号可能是一种选择,但感觉好像这不是真正正确的做法。

绝对是正确的做法

难道我不需要考虑更多的特殊情况,例如 HTML 标签等??

是的。

与要插入到 HTML 文档中的任何其他文本一样,该文本中在 HTML 中具有特殊含义的字符应首先转换为 HTML。

令人高兴的是,您只需要担心字符,而不必担心像标签这样复杂的特殊情况。


你如何做取决于你如何生成你的 HTML。

在模板工具包中:

<textarea>[% myData | html %]</textarea>
Run Code Online (Sandbox Code Playgroud)

在 PHP 中:

<textarea><?php echo htmlspecialchars($myData, ENT_QUOTES); ?></textarea>
Run Code Online (Sandbox Code Playgroud)