HTMLエンティティをおこなう
PHPPHPでHTMLエンティティをおこなう方法を解説します。ソースなどの表示に役に立ちます。
HTMLエンティティをおこなう
HTMLエンティティとは、
PHPでHTMLエンティティをおこなう場合、htmlentities関数とhtmlspecialchars関数の2種類が用意されています。この2つの関数の違いは「変換する特殊文字の対象」です。
変換する特殊文字
- htmlentities関数変換可能なすべての特殊文字
- htmlspecialchars関数& " ' < >( " ' はオプションによります)
htmlentities関数は変換可能な特殊文字をすべて変換しますので入力フォームからの値を取得する際に不正なコードが送信されることを防止することなどに向いています。対してhtmlspecialchars関数はソースをHTMLで表示する場合の必要最低限の変換をおこないますのでソース表示に向いています。
htmlentities関数
htmlentities( 対象文字列, [オプション]);
オプション
- ENT_COMPAT
- ダブルクオート=変換する、シングルクオート=変換しない
- ENT_QUOTES
- ダブルクオート=変換する、シングルクオート=変換する
- ENT_NOQUOTES
- ダブルクオート=変換しない、シングルクオート=変換しない
- PHP
- COPY
echo htmlentities("<html></html>", ENT_QUOTES);
htmlspecialchars関数
htmlspecialchars( 対象文字列, [オプション]);
オプション
- ENT_COMPAT
- ダブルクオート=変換する、シングルクオート=変換しない
- ENT_QUOTES
- ダブルクオート=変換する、シングルクオート=変換する
- ENT_NOQUOTES
- ダブルクオート=変換しない、シングルクオート=変換しない
- PHP
- COPY
echo htmlspecialchars("<html></html>", ENT_QUOTES);
HTMLエンティティした文字を戻す
HTMLエンティティした文字を戻す(デコード)関数もPHPでは用意されています。
htmlentities関数でエンティティした文字はhtml_entity_decode関数で、htmlspecialchars関数でエンティティした文字はhtmlspecialchars_decode関数で戻すことができます。
html_entity_decode関数
html_entity_decode( 対象文字列, [オプション]);
オプション
- ENT_COMPAT
- ダブルクオート=変換する、シングルクオート=変換しない
- ENT_QUOTES
- ダブルクオート=変換する、シングルクオート=変換する
- ENT_NOQUOTES
- ダブルクオート=変換しない、シングルクオート=変換しない
- PHP
- COPY
echo html_entity_decode("<html></html>", ENT_QUOTES);
htmlspecialchars_decode関数
htmlspecialchars_decode( 対象文字列, [オプション]);
オプション
- ENT_COMPAT
- ダブルクオート=変換する、シングルクオート=変換しない
- ENT_QUOTES
- ダブルクオート=変換する、シングルクオート=変換する
- ENT_NOQUOTES
- ダブルクオート=変換しない、シングルクオート=変換しない
- PHP
- COPY
echo htmlspecialchars_decode("<html></html>", ENT_QUOTES);
関数化する
HTMLエンティティをソース上で使うこともよくありますが、関数名が長くオプションもあるので面倒に感じることもあります。なので関数化しておくと便利です。
- PHP
- COPY
function he($str){
echo htmlentities($str, ENT_QUOTES);
}
function hs($str){
echo htmlspecialchars($str, ENT_QUOTES);
}
function hed($str){
echo html_entity_decode($str, ENT_QUOTES);
}
function hsd($str){
echo htmlspecialchars_decode($str, ENT_QUOTES);
}
関数化しておくことでソースが多少シンプルになります。
<?php echo htmlspecialchars("<p>文字</p>", ENT_QUOTES); ?>
<?php hs("<p>文字</p>"); ?>