26.12 HTML_CLOBファンクション
このファンクションは、HTML環境でコンテキストが変更される可能性がある文字をエスケープします。これは、よく知られたSYS.HTF.ESCAPE_SC
の拡張バージョンです。
このファンクションの結果は、SET_HTML_ESCAPING_MODE
を使用して定義されているエスケープ・モードによって異なります。デフォルトのエスケープ・モードは「拡張」ですが、これは、手動でSET_HTML_ESCAPING_MODE
をコールするか、アプリケーションのセキュリティ属性「HTMLエスケープ・モード」を「基本」に設定することで上書きできます。モードが「基本」の場合、このファンクションの動作はSYS.HTF.ESCAPE_SC
と同様です。そうでない場合は、次のルールが適用されます。
次の表に、このファンクションによって変換されるASCII文字と、それらの文字がエスケープされた値を示します。
表26-1 変換されるASCII文字がエスケープされた値
実際のASCII文字 | 戻されるエスケープされた文字 |
---|---|
& |
& |
" |
" |
< |
< |
> |
> |
' | ' |
/ |
/ |
また、データベースのNLS文字セットがUTF-8以外の場合や、HTTPヘッダー変数REQUEST_IANA_CHARSET
がUTF-8 (デフォルト)以外に設定されている場合は、このファンクションでUnicode文字をエスケープできます。Unicodeエスケープが適用される場合、これらの文字は、&#xHHHH;
によってエスケープされます。ここで、HHHH
はUnicodeの16進コードです。
構文
APEX_ESCAPE.HTML_CLOB (
p_string IN CLOB )
RETURN CLOB deterministic;
パラメータ
パラメータ | 説明 |
---|---|
p_string |
エスケープされる文字列のテキスト |
例
次の例では、基本(B
)モードおよび拡張(E
)モードでエスケープをテストします。
DECLARE
procedure eq(p_str1 in clob,p_str2 in clob)
is
BEGIN
IF dbms_lob.compare(p_str1||'.', p_str2||'.') <> 0 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_clob('hello &"<>''/'), 'hello &"<>''/');
apex_escape.set_html_escaping_mode('E');
eq(apex_escape.html_clob('hello &"<>''/'), 'hello &"<>'/');
END;
親トピック: APEX_ESCAPE