如何防止HTML textarea转换特殊符号,例如>?

时间:2016-02-05 14:11:53

标签: javascript html

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

&gt;

进入相应的符号:

>

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

这是一个MWE:

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

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

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

转义所有&符号可能是一个选项(如此处所示:how to show &lt;html&gt; in textarea),但感觉好像不是真正正确的事情。 (我不会考虑更多特殊情况,例如HTML标签等。??)

是否有#34;推荐&#34;在HTML中实现代码编辑器的方法?

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

2 个答案:

答案 0 :(得分:3)

  

逃离所有&amp;符号可能是一种选择,但感觉好像不是真正正确的事情。

绝对正确的事情

  

我不会考虑更多特殊情况,例如HTML标签等。??

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

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

如何操作取决于您如何生成HTML。

在模板工具包中:

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

在PHP中:

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

答案 1 :(得分:1)

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