PowerCMS™
アルファサードのゴールデンウィーク休業について を追加しました。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[新着情報] 多要素認証設定画面の QR コードが表示されない問題への対策ファイル を追加しました。
[新着情報] PowerCMSクラウド 月額費用の価格改定に関する追加情報を公開します を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > テンプレート作成Tips > エスケープに関するモディファイアについて

2018年11月20日

エスケープに関するモディファイアについて

『エスケープ処理を行うモディファイアが変換対象としている文字の一覧はありますか?』という趣旨のお問い合わせを弊社製品サポート宛てにいただきましたので、PowerCMS で利用可能なエスケープ処理を施すモディファイアの置換対象となる文字をご紹介いたします。

※ 各モディファイアの使い方につきましては、それぞれのリファレンスを参照してください。

encode_html
1 を設定すると、テンプレートタグの値が HTML エンコードされます。
encode_json
テンプレートタグの出力結果を JSON として扱えるようにエスケープします。
encode_js
1 に設定すると、テンプレートタグの値が javascript の文字列の値として使えるようにエンコードします。
encode_php
PHP コード内でデータを使えるようにテンプレートタグの出力をエンコードします。
encode_url
1 を設定すると、URL での利用に合わせたフォーマットに、テンプレートタグの値をエンコードします。アルファベット以外の文字を 16 進数ベースのものに変換します。
encode_xml
1 に設定すると、XMLフォーマットに適した形式にエンコードします。データがHTML要素やタグを含んでいる場合、CDATAブロックで囲んで出力します。

encode_html モディファイアによる変換

環境変数 NoHTMLEntities の値によって動作がかわります。

NoHTMLEntities が 1 の場合 (初期値)

encode_html によるエスケープ対象
対象文字 変換後
< &lt;
> &gt;
& &amp;
" &quot;
' &#039;

& は実体参照の場合には変換対象外となります。

NoHTMLEntities が 0 の場合

HTML::Entities モジュールの encode_entities メソッドを利用して変換を行います。encode_entities メソッドの詳細についてはリファレンスを参照してください。

encode_json モディファイアによる変換

JSON モジュールの to_json メソッドを利用して変換を行います。to_json メソッドの詳細についてはリファレンスを参照してください。

encode_js モディファイア モディファイアによる変換

encode_js によるエスケープ対象
対象文字 変換後
" \"
\ \\
> \>
< \<
script s\cript
</ <\/
' \'
改行 \n
キャリッジリターン \r
タブ \t
Null文字 \0
改ページ \f

encode_php モディファイアによる変換

encode_php の仕様につきましてはリファレンスを参照してください。

encode_php におけるエスケープ対象の一部
対象文字 変換後
' \'
\ \\
$ \$
改行 \n
キャリッジリターン \r
タブ \t

encode_url モディファイアによる変換

文字コードを16進数に変換した値にゼロパディングを施して先頭に % を付与します。

encode_url におけるエスケープ対象の一部
対象文字 変換後
< %3C
> %3E
' %27
" %22
& %26
/ %2F
\ %5C
$ %24
? %3F

encode_xml モディファイアによる変換

encode_xml は値が HTML や テンプレートタグを含んでいる場合、また環境変数 NoCDATA の指定によって動作がかわります。

encode_xml の動作パターン
環境変数 NoCDATA が 0 の場合 環境変数 NoCDATA が 1 の場合
値に HTML を含む場合 CDDATA ブロックで囲む 対象文字を変換する
値に HTML を含まない場合 対象文字を変換する 対象文字を変換する

CDATA ブロックで囲わず、対象文字を変換する場合のパターンは下記になります。

対象文字 変換後
& &amp;
" &quot;
< &lt;
> &gt;
' &apos;

カテゴリー
テンプレート作成Tips

Recent Entries