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<b と扱われるため該当データが無い状態になる ***/
この場合どうすれば良いかというと、カテゴリセットで名前を設定する際に、[ a<b ] という文字列ではなく、HTML エスケースした状態の [a<b] という文字列を設定することで、解決することができます。
この < は一例であり、カテゴリセットなどで以下の文字を利用したい場合は、エスケープしてあげたほうが良いでしょう。
利用したい文字 | HTML エスケープ |
---|---|
< | < |
> | > |
‘ | ' |
“ | " |
& | & |
(半角スペース) | |
© | © |
® | ® |
« | « |
» | » |
HTML エスケープツール
上記のルールで文字列のエスケープ処理を行うスクリプトを用意しました。
以下のテキストボックスにエスケープ処理をしたい HTML 文字列をペーストし、「エスケープ処理」ボタンを押すと、テキストボックスにエスケープ処理した文字列を返します。
是非ご利用下さい。