13.2 HTMLファンクション
このファンクションは、HTML環境でコンテキストが変更される可能性のある文字をエスケープします。これは、既知のsys.htf.escape_sc
の拡張バージョンです。
ファンクションの結果は、apex_escape.set_html_escaping_mode
を使用して定義されるエスケープ・モードによって異なります。デフォルトのエスケープ・モードは「拡張」
ですが、これは、手動でset_html_escaping_mode
をコールするか、アプリケーションのセキュリティ属性「HTMLエスケープ・モード」
を「基本」
に設定することで上書きできます。モードが「基本」
の場合、ファンクションはsys.htf.escape_sc
と同様に動作します。そうでない場合は、次のルールが適用されます。
表13-1に、このファンクションによって変換されるASCII文字と、それらの文字がエスケープされた値を示します。
表13-1 変換されるASCII文字がエスケープされた値
実際のASCI文字 | 戻されるエスケープされた文字 |
---|---|
|
|
|
|
|
|
|
|
' |
|
|
|
構文
APEX_ESCAPE.HTML (
p_string IN VARCHAR2 )
return VARCHAR2;
パラメータ
表13-2に、HTML
ファンクションで使用可能なパラメータを示します。
表13-2 HTMLファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
エスケープされる文字列のテキスト |
例
この例では、基本(B)モードおよび拡張(E)モードでエスケープをテストします。
declare
procedure eq(p_str1 in varchar2,p_str2 in varchar2)
is
begin
if p_str1||'.' <> p_str2||'.' then
raise_application_error(-20001,p_str1||' <> '||p_str2);
end if;
end eq;
begin
apex_escape.set_html_escaping_mode('B');
eq(apex_escape.html('hello &"<>''/'), 'hello &"<>''/');
apex_escape.set_html_escaping_mode('E');
eq(apex_escape.html('hello &"<>''/'), 'hello
&"<>'/');
end;
親トピック: APEX_ESCAPE