Movable Typeでのエスケープ処理を試してみる

Movable Typeでダブルクォーテーションをエスケープしたいということがあったので、エスケープの方法についていくつか見てみます。

サンプルコード

まずはMovable Typeで用意されているエスケープについてみてみます。
まずはjsonで使用できる値にエスケープ処理するencode_json=”1″です。

<mt:EntryTitle encode_json="1">

エスケープ結果は以下のようになります。

ダブルクォーテーション"バックスラッシュ\タブ	
↓
ダブルクォーテーション\"バックスラッシュ\\タブ\t

次にURLのフォーマットに合わせてエンコードするencode_url=”1″です。

<mt:EntryTitle encode_url="1">

エスケープ結果は以下のようになります。

https://example.com/sample/
↓
https%3A%2F%2Fexample.com%2Fsample%2F

次にHTMLをエスケープするencode_html=”1″です。

<mt:EntryTitle encode_html="1">

エスケープ結果は以下のようになります。

<span class="em">テスト"A"</span>
↓
&lt;span class=&quot;em&quot;&gt;テスト&quot;A&quot;&lt;/span&gt;

今回やりたかったことは、HTMLの属性値として使用する文字列からダブルクォーテーションをエスケープして、さらにHTMLタグが含まれる場合は除去したいという内容でした。
試した結果、remove_html=”1″の後にencode_html=”1″を指定すると、意図した処理になりました。

<mt:EntryTitle remove_html="1" encode_html="1">
<span class="em">テスト"A"</span>
↓
テスト&quot;A&quot;

属性の指定した順番に処理を行うようで、remove_html=”1″とencode_html=”1″を逆にすると、先にエスケープ処理が行われるため、HTMLタグの削除が行われないようでした。

<mt:EntryTitle encode_html="1" remove_html="1">
<span class="em">テスト"A"</span>
↓
&lt;span class=&quot;em&quot;&gt;テスト&quot;A&quot;&lt;/span&gt;

HTMLではなくダブルクォーテーションのみエスケープしたい場合、encode_htmlの代わりにregex_replaceを使うこともできます。

<mt:EntryTitle remove_html="1" regex_replace='/"/g',"&quot;">

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930