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文字 戻されるエスケープされた文字

&

&

"

"

<

&lt;

>

&gt;

'

&#x27;

/

&#x2F;

構文

APEX_ESCAPE.HTML (
    p_string IN VARCHAR2 )
    return VARCHAR2;

パラメータ

表13-2に、HTMLファンクションで使用可能なパラメータを示します。

表13-2 HTMLファンクションのパラメータ

パラメータ 説明

p_string

エスケープされる文字列のテキスト

この例では、基本(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 &amp;&quot;&lt;&gt;''/'); 
    apex_escape.set_html_escaping_mode('E'); 
    eq(apex_escape.html('hello &"<>''/'), 'hello
    &amp;&quot;&lt;&gt;&#x27;&#x2F;'); 
end;