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;
&#39;
&quot;
&&amp;
(半角スペース)&nbsp;
©&copy;
®&reg;
«&laquo;
»&raquo;
主な HTML エスケープ文字