HTML エスケープ文字

HTML エスケープ文字

Movable Type で、カテゴリセットにて、< という文字の入ったカテゴリ名を設定しようとした際に、期待した動作にならなかったので、その解決策をメモ代わりに記載します。

たとえばカテゴリ名を a<b という文字列にしたい場合、このままだと、カテゴリセットで a<b のカテゴリのコンテンツを抽出したい、といった際にエラー(というか該当するデータがないという事になり出力されない)になります。

/*** カテゴリアーカイブなどで、ArchiveTitle に a<b という値が入るような場合 ***/
<mt:setvarblock name="searchcategoryname"><$mt:ArchiveTitle$></mt:setvarblock>
<mt:contents content_type="コンテンツデータ" field:xxxxxx="$searchcategoryname">
  ****
</mt:contents>
/*** ↑ MT 内部的には a&lt;b と扱われるため該当データが無い状態になる ***/


この場合どうすれば良いかというと、カテゴリセットで名前を設定する際に、[ a<b ] という文字列ではなく、HTML エスケースした状態の [a&lt;b] という文字列を設定することで、解決することができます。

この < は一例であり、カテゴリセットなどで以下の文字を利用したい場合は、エスケープしてあげたほうが良いでしょう。

利用したい文字HTML エスケープ
<&lt;
>&gt;
&#x27;
&quot;
&&amp;
(半角スペース)&nbsp;
©&copy;
®&reg;
«&laquo;
»&raquo;

HTML エスケープツール

上記のルールで文字列のエスケープ処理を行うスクリプトを用意しました。

以下のテキストボックスにエスケープ処理をしたい HTML 文字列をペーストし、「エスケープ処理」ボタンを押すと、テキストボックスにエスケープ処理した文字列を返します。

是非ご利用下さい。