関数索引
quote() 関数は与えられた文字列中の & < > " を、それぞれ & < > "に置き換えます。タグの属性の値として安全に使える文字列を生成するために使用します。文字列中の文字の置換ルール下記の通りです。
変換される文字 | 変換後の形式 |
---|---|
" (double-quote) | " |
& (ampersand) | & |
< (litter-than) | < |
> (greater-than) | > |
ただし、& に関しては、与えられた文字列中で、既に文字参照を構成していると考えられる場合には、& への書き換えは行われません。
変換を加えたい文字列を指定します。
quote() に " と & と < と > を含む文字列を与えて結果を見てみましょう。(文字列中の " は \" とエスケープされています)
%quote("文字列中に\"&<>が含まれている")%
実行結果は下記のようになるでしょう。
文字列中に"&<>が含まれている
quote() に & と ™ と Ӓ を含む文字列を与えてみましょう。
%quote("文字列中に&™Ӓが含まれている")%
実行結果は下記のようになるでしょう。
文字列中に&™Ӓが含まれている
& も ™ も Ӓ も既に文字参照の形をしているので、先頭の & は & に書き換えられることはありません。
img タグの alt 属性を生成する場合に使用してみましょう。テンプレートに alt という要素が定義されていて、そこにユーザが alt 値を入力している場合を想定しています。ユーザが alt に " や & を含む文章を入力している場合でも quote() 関数を使用すれば安全に alt 属性の値を生成することができるようになります。
<img src="a.png" alt="%quote(alt)%">
文字参照と認識される文字列の一覧は unescapeEntities() 関数のマニュアルを参照してください。ただし、quote() 関数は、正確に文字参照の形をしているものだけを認識します。例えば unescapeEntities() 関数の場合には & という俗称(末尾のセミコロンが欠落している)も認識しますが、quote() 関数は正しく & と綴られている場合のみ文字参照とみなします。