2

私がhtmlドキュメントを持っているとしましょう:

<html>test<html>

そして、そのコードをブラウザに表示したいと思います。次に、次のようなものを作成します。

<html><body>
<pre>&lt;html&gt;test&lt;html&gt;</pre>
</body></html>

真ん中にガビンを作るために私は機能を持っています:

(defn html-escape [string] 
  (str "<pre>" (clojure.string/escape string {\< "&lt;", \> "&gt;"}) "</pre>"))

これは私のために上記の変換を行います:

user> (html-escape "<html>test<html>")
"<pre>&lt;html&gt;test&lt;html&gt;</pre>"

私の質問は次のとおりです。それで十分ですか、それともその変換を中断させるhtmlに出くわすのでしょうか。

そして、2番目の質問は次のようになります:clojureにはこれが組み込まれていますか?見つかりません。

4

1 に答える 1

3

いくつかのオプションがあります:

  1. あなた自身を転がしてください。
  2. コモンズを使用するStringEscapeUtils
  3. ヒカップを使用している場合は、このための機能が付属しています。

#3の場合は、 hiccup.corehの関数を使用するだけです。

#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 "&"  "&amp;")
    (replace "<"  "&lt;")
    (replace ">"  "&gt;")
    (replace "\"" "&quot;")))

これらのソリューションはどれでも問題ありません。

于 2013-01-09T11:15:37.883 に答える