htmlspecialchars( string $string[, int $flags[, string $encoding[, bool $double_encode]]] )
は、文字列「$string」の中のHTMLの予約語(マークアップ記号)「'
、"
、<
、>
、&
」を、文字セット「$encoding」に基づき、HTMLエンティティ(文字実体参照)に変換(エンコード)する組み込み関数。'
は、数値文字参照に変換する。
デコードには、htmlspecialchars_decode ( string $string[, int $flags] )を使う。
定義
パラメータ
- 文字列型 $string
HTMLの予約語(マークアップ記号)を、HTMLエンティティ(文字実体参照)に、変換(エンコード)したい文字列を指定する。
- 数値型 $flags
クォートやコードなどの取り扱い方法。
- ENT_COMPAT: ダブルクオートは変換する。シングルクオートは変換しない。
- ENT_QUOTES: ダブルクオートも、シングルクオートも、変換する。
- ENT_NOQUOTES: ダブルクオートも、シングルクオートも、変換しない。
- ENT_IGNORE:
- ENT_SUBSTITUTE:
- ENT_DISALLOWED:
- ENT_HTML401: 「HTML 4.01」として、コードを処理。
- ENT_XML1: 「XML 1」として、コードを処理。
- ENT_XHTML: 「XHTML」として、コードを処理。
- ENT_HTML5: 「HTML 5」として、コードを処理。
- 文字列型 $encoding
変換に使用する文字セットを指定する。
サポートしている文字セット。
- ISO-8859-1
- ISO-8859-5
- ISO-8859-15
- UTF-8
- cp866
- cp1251
- cp1252
- KOI8-R
- BIG5
- GB2312
- BIG5-HKSCS
- Shift_JIS
- EUC-JP
- MacRoman
「PHP 5.4.0」以降の初期設定値は、「UTF-8」。
「PHP 5.4.0」より前の初期設定値は、「ISO-8859-1」。
- 論理型 $double_encode
オプション。
既存のHTMLエンティティ(文字実体参照)を、エンコードするかどうか。
「true」を指定すると、既存のHTMLエンティティ(文字実体参照)も、エンコードする。
「false」を指定すると、既存のHTMLエンティティ(文字実体参照)は、エンコードしない。
初期設定値は、「true」。
戻り値
文字列「文字列型 $string」の中のHTMLの予約語(マークアップ記号)を、文字セット「$encoding」に基づき、HTMLエンティティ(文字実体参照)にエンコードした文字列。
構文
文字実体参照にエンコード(1)
「文字列」の中のHTMLの予約語(マークアップ記号)を、「文字セット」に基づき、HTMLエンティティ(文字実体参照)にエンコードし、「エンコード後文字列」を返す。
文字実体参照にエンコード(2)
「文字列」の中のHTMLの予約語(マークアップ記号)を、「文字セット」に基づき、HTMLエンティティ(文字実体参照)にエンコードし、「エンコード後文字列」を返す。
既存のHTMLエンティティ(文字実体参照)は、エンコードしない。
サンプル
HTMLの予約語(マークアップ記号)を、文字実体参照にエンコード
$varArray = array( "'", '"', "<", ">", "&" );
foreach( $varArray as $varStr ){
echo "{$varStr}: ";
echo htmlspecialchars( $varStr, ENT_QUOTES, "UTF-8" );
echo "\n";
}
?>
↓↓↓出力結果↓↓↓
": "
<: <
>: >
&: &
文字実体参照にエンコード(既存のHTMLエンティティは、エンコードしない)
$varArray = array( "'", "'", '"', """, "<", "<", ">", ">", "&", "&" );
foreach( $varArray as $varStr ){
echo "{$varStr}: ";
echo htmlspecialchars( $varStr, ENT_QUOTES, "UTF-8", false );
echo "\n";
}
?>
↓↓↓出力結果↓↓↓
': '
": "
": "
<: <
<: <
>: >
>: >
&: &
&: &
文字実体参照にエンコード(既存のHTMLエンティティも、エンコードする)
$varArray = array( "'", "'", '"', """, "<", "<", ">", ">", "&", "&" );
foreach( $varArray as $varStr ){
echo "{$varStr}: ";
echo htmlspecialchars( $varStr, ENT_QUOTES, "UTF-8", true );
echo "\n";
}
?>
↓↓↓出力結果↓↓↓
': &#039;
": "
": &quot;
<: <
<: &lt;
>: >
>: &gt;
&: &
&: &amp;