如何防止 HTML 文本区域转换特殊符号,如 >

How to prevent HTML textarea from converting special symbols such as >?

本文关键字:特殊符号 转换 何防止 HTML 文本 区域      更新时间:2023-09-26

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

&gt;

进入相应的符号:

>

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

这是一个MWE:

<!doctype html>
<html>
  <head>
  </head>  
<body>
    <textarea>
        &lsquo;
        &rsquo;
        &sbquo;
        &ldquo;
        &rdquo;
        &bdquo;
        &dagger;
        &Dagger;
    </textarea>
</html>

加载页面时,文本区域编辑器中的所有内容都会被转换。

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

是否有"推荐"的方法在HTML中实现代码编辑器?

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

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

绝对是正确的做法

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

是的。

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

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


如何做到这一点取决于您如何生成 HTML。

在模板工具包中:

<textarea>[% myData | html %]</textarea>

在 PHP 中:

<textarea><?php echo htmlspecialchars($myData, ENT_QUOTES); ?></textarea>

正如你所说,逃离&是最好的选择。这是正确的,根据您要显示&gt;的事实.这样,它将被直接正确理解。