[解決済み] HTMLタグをHTMLエンティティとしてエスケープする最速の方法とは?
2022-10-28 10:43:44
質問
Chromeの拡張機能を書いているのですが、その中で
ロット
の文字列をサニタイズすることです。
があります。
を変換して、HTMLタグを含む文字列をサニタイズすることです。
<
,
>
と
&
から
<
,
>
と
&
のように、それぞれ
(言い換えれば、PHPの
htmlspecialchars(str, ENT_NOQUOTES)
- ダブルクオート文字を変換する必要性は特にないと思います)
これは私がこれまで見つけた中で最も速い関数です。
function safe_tags(str) {
return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>') ;
}
でも、数千の文字列を一度に通すとなると、やはり大きなラグがありますね。
どなたか改良していただけませんか?10文字以上150文字未満の文字列が主な対象ですが、違いがあれば教えてください。
(私が持っていた1つのアイデアは、大なり記号をわざわざエンコードしないことでした。それで本当に危険はないでしょうか?)
どのように解決するのですか?
コールバック関数を渡して置換を実行してみてはいかがでしょうか。
var tagsToReplace = {
'&': '&',
'<': '<',
'>': '>'
};
function replaceTag(tag) {
return tagsToReplace[tag] || tag;
}
function safe_tags_replace(str) {
return str.replace(/[&<>]/g, replaceTag);
}
以下はパフォーマンステストです。
http://jsperf.com/encode-html-entities
を呼び出した場合と比較するために
replace
関数を繰り返し呼び出し、Dmitrij が提案した DOM メソッドを使用した場合と比較してみてください。
あなたの方法の方が早そうですが...。
なぜそれが必要なのですか?
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] XHTMLの自己完結型タグを除くオープンタグにマッチするRegEx
-
[解決済み] HTMLマークアップのどこに<script>タグを記述すればよいですか?
-
[解決済み] CSSコンテンツによるHTMLエンティティの追加
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み] これは純関数ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptでHTMLエンティティをエンコードする
-
[解決済み] jQueryでHTML文字列をエスケープする
-
[解決済み] JSのDateからDay名
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法