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 の場合 (初期値)
| 対象文字 | 変換後 |
|---|---|
| < | < |
| > | > |
| & | & |
| " | " |
| ' | ' |
※ & は実体参照の場合には変換対象外となります。
NoHTMLEntities が 0 の場合
HTML::Entities モジュールの encode_entities メソッドを利用して変換を行います。encode_entities メソッドの詳細についてはリファレンスを参照してください。
encode_json モディファイアによる変換
JSON モジュールの to_json メソッドを利用して変換を行います。to_json メソッドの詳細についてはリファレンスを参照してください。
encode_js モディファイア モディファイアによる変換
| 対象文字 | 変換後 |
|---|---|
| " | \" |
| \ | \\ |
| > | \> |
| < | \< |
| script | s\cript |
| </ | <\/ |
| ' | \' |
| 改行 | \n |
| キャリッジリターン | \r |
| タブ | \t |
| Null文字 | \0 |
| 改ページ | \f |
encode_php モディファイアによる変換
encode_php の仕様につきましてはリファレンスを参照してください。
| 対象文字 | 変換後 |
|---|---|
| ' | \' |
| \ | \\ |
| $ | \$ |
| 改行 | \n |
| キャリッジリターン | \r |
| タブ | \t |
encode_url モディファイアによる変換
文字コードを16進数に変換した値にゼロパディングを施して先頭に % を付与します。
| 対象文字 | 変換後 |
|---|---|
| < | %3C |
| > | %3E |
| ' | %27 |
| " | %22 |
| & | %26 |
| / | %2F |
| \ | %5C |
| $ | %24 |
| ? | %3F |
encode_xml モディファイアによる変換
encode_xml は値が HTML や テンプレートタグを含んでいる場合、また環境変数 NoCDATA の指定によって動作がかわります。
| 環境変数 NoCDATA が 0 の場合 | 環境変数 NoCDATA が 1 の場合 | |
|---|---|---|
| 値に HTML を含む場合 | CDDATA ブロックで囲む | 対象文字を変換する |
| 値に HTML を含まない場合 | 対象文字を変換する | 対象文字を変換する |
CDATA ブロックで囲わず、対象文字を変換する場合のパターンは下記になります。
| 対象文字 | 変換後 |
|---|---|
& |
& |
" |
" |
< |
< |
> |
> |
' |
' |
- カテゴリー
- テンプレート作成Tips



コメントを投稿する