假设我有一个html文档:
<html>test<html>
我想在浏览器中显示该代码。然后我会创建类似的东西:
<html><body>
<pre><html>test<html></pre>
</body></html>
为了使gubbins在中间我有一个功能:
(defn html-escape [string]
(str "<pre>" (clojure.string/escape string {\< "<", \> ">"}) "</pre>"))
为我做了上述转换:
user> (html-escape "<html>test<html>")
"<pre><html>test<html></pre>"
我的问题是:那是否足够好,或者我是否会遇到会导致转换失败的HTML?
第二个问题可能是:clojure内置了吗?我找不到了。
答案 0 :(得分:3)
有几个选择:
对于#3,只需使用hiccup.core中的h
功能。
对于#2,将[org.apache.commons/commons-lang3 "3.1"]
添加到您的依赖项,然后您可以使用
(org.apache.commons.lang3.StringEscapeUtils/escapeHtml4 "your string")
对于#1,您可以使用hiccup使用的功能。它非常小:
(defn escape-html
"Change special characters into HTML character entities."
[text]
(.. ^String (as-str text)
(replace "&" "&")
(replace "<" "<")
(replace ">" ">")
(replace "\"" """)))
任何这些解决方案都可以。