質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

11671閲覧

HTMLのエスケープ処理をJSを使って行う方法

Usagino

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2018/08/07 04:05

HTML

1<p>markup</p>

と書かれたソースコードのうち& < > ` " ' をエスケープ処理して&gt &ltなどに置換して

&lt;p&gt;markup&lt;/p&gt;

とするjQueryを使った方法を教えて下さい。

ネットで探してみると以下のようなES6で書かれた関数を見つけましたがいまいち使い道がピンときません

js

1 const htmlEscape = (str) => { 2 if (!str) return; 3 return str.replace(/[<>&"'`]/g, (match) => { 4 const escape = { 5 '<': '&lt;', 6 '>': '&gt;', 7 '&': '&amp;', 8 '"': '&quot;', 9 "'": '&#39;', 10 '`': '&#x60;' 11 }; 12 return escape[match]; 13 }); 14 } 15 console.log(htmlEscape('& < > ` " ' + "'"));

よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/07 04:11

「使い道」と「使い方」では大きく意味が違います。本当に「使い道」の方でしょうか。実際に試されたのでしょうか。
Usagino

2018/08/07 04:37

試しました
m.ts10806

2018/08/07 04:40

試した内容を書かないと誰もわかりませんよ。無駄なやり取りが何度も発生するので質問内容には漏れなく記載してください
guest

回答3

0

ベストアンサー

ネットで探してみると以下のようなES6で書かれた関数を見つけましたがいまいち使い道がピンときません

これで十分だと思うのですが、具体的に何が問題なのでしょうか。念のために、Arrow Functionを使わない形に書き直しておきます。

javascript

1function htmlEscape(str) { 2 if (!str) return; 3 return str.replace(/[<>&"'`]/g, function(match) { 4 const escape = { 5 '<': '&lt;', 6 '>': '&gt;', 7 '&': '&amp;', 8 '"': '&quot;', 9 "'": '&#39;', 10 '`': '&#x60;' 11 }; 12 return escape[match]; 13 }); 14}

なお、jQueryはDOM操作を拡張するライブラリですので、文字列の置き換えだけなら純粋なJavaScriptでもjQueryでも、ほとんど差はありません。

投稿2018/08/07 04:12

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現のreplaceがコールバックを返すところがイメージできないのでしょうかね
ちょっと無理があるかもしれませんがこういうやりかたもあります

javascript

1var str="<hoge fuga='`&\"'>"; 2var escape = { 3 '<': '&lt;', 4 '>': '&gt;', 5 '&': '&amp;', 6 '"': '&quot;', 7 "'": '&#39;', 8 '`': '&#x60;' 9 }; 10var str2=str1.split("").map(function(x){return typeof escape[x]==="undefined"?x:escape[x]}).join(""); 11console.log(str2);

投稿2018/08/07 04:26

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

jQueryとそのサンプルを読み込んでる前提で

javascript

1$('p').text(htmlEscape($('p').text()));

とすれば置換されるのでは無いでしょうか

投稿2018/08/07 04:13

namda

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問