26.7 HTMLファンクション

このファンクションは、HTML環境でコンテキストが変更される可能性がある文字をエスケープします。これは、sys.htf.escape_scの拡張バージョンです。

このファンクションの結果は、apex_escape.set_html_escaping_modeを使用して定義されているエスケープ・モードによって異なります。デフォルトのエスケープ・モードはExtendedですが、これは、手動でset_html_escaping_modeをコールするか、アプリケーションのセキュリティ属性HTML Escaping ModeBasicに設定することで上書きできます。モードがBasicの場合、ファンクションはsys.htf.escape_scと同様に動作します。そうでない場合は、次のルールが適用されます。

次の表に、このファンクションによって変換されるASCII文字と、それらの文字がエスケープされた値を示します。

実際のASCII文字 戻されるエスケープされた文字
& &
" "
< &lt;
> &gt;
' &#x27;
/ &#x2F;

構文

APEX_ESCAPE.HTML (
    p_string IN VARCHAR2 )
    RETURN VARCHAR2 deterministic;

パラメータ

パラメータ 説明
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;