htmlspecialchars( string $string[, int $flags[, string $encoding[, bool $double_encode]]] )

htmlspecialchars( string $string[, int $flags[, string $encoding[, bool $double_encode]]] )は、文字列「$string」の中のHTMLの予約語(マークアップ記号)「'"<>&」を、文字セット「$encoding」に基づき、HTMLエンティティ(文字実体参照)に変換(エンコード)する組み込み関数。'は、数値文字参照に変換する。

デコードには、htmlspecialchars_decode ( string $string[, int $flags] )を使う。

定義

文字列型 htmlspecialchars( 文字列型 $string[, 数値型 $flags[, 文字列型 $encoding[, 論理型 $double_encode]]] );

パラメータ

文字列型 $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)

エンコード後文字列 = htmlspecialchars( 文字列, 取り扱い方法, 文字セット );

「文字列」の中のHTMLの予約語(マークアップ記号)を、「文字セット」に基づき、HTMLエンティティ(文字実体参照)にエンコードし、「エンコード後文字列」を返す。

文字実体参照にエンコード(2)

エンコード後文字列 = htmlspecialchars( 文字列, 取り扱い方法, 文字セット, false );

「文字列」の中のHTMLの予約語(マークアップ記号)を、「文字セット」に基づき、HTMLエンティティ(文字実体参照)にエンコードし、「エンコード後文字列」を返す。

既存のHTMLエンティティ(文字実体参照)は、エンコードしない。

サンプル

HTMLの予約語(マークアップ記号)を、文字実体参照にエンコード

<?php
$varArray = array( "'", '"', "<", ">", "&" );
foreach( $varArray as $varStr ){
    echo "{$varStr}: ";
    echo htmlspecialchars( $varStr, ENT_QUOTES, "UTF-8" );
    echo "\n";
}
?>

↓↓↓出力結果↓↓↓

': &#039;
": &quot;
<: &lt;
>: &gt;
&: &amp;

文字実体参照にエンコード(既存のHTMLエンティティは、エンコードしない)

<?php
$varArray = array( "'", "&#039;", '"', "&quot;", "<", "&lt;", ">", "&gt;", "&", "&amp;" );
foreach( $varArray as $varStr ){
    echo "{$varStr}: ";
    echo htmlspecialchars( $varStr, ENT_QUOTES, "UTF-8", false );
    echo "\n";
}
?>

↓↓↓出力結果↓↓↓

': &#039;
&#039;: &#039;
": &quot;
&quot;: &quot;
<: &lt;
&lt;: &lt;
>: &gt;
&gt;: &gt;
&: &amp;
&amp;: &amp;

文字実体参照にエンコード(既存のHTMLエンティティも、エンコードする)

<?php
$varArray = array( "'", "&#039;", '"', "&quot;", "<", "&lt;", ">", "&gt;", "&", "&amp;" );
foreach( $varArray as $varStr ){
    echo "{$varStr}: ";
    echo htmlspecialchars( $varStr, ENT_QUOTES, "UTF-8", true );
    echo "\n";
}
?>

↓↓↓出力結果↓↓↓

': &#039;
&#039;: &amp;#039;
": &quot;
&quot;: &amp;quot;
<: &lt;
&lt;: &amp;lt;
>: &gt;
&gt;: &amp;gt;
&: &amp;
&amp;: &amp;amp;

スポンサード リンク

カテゴリー: HTML, PHP, 文字列, 組み込み関数 タグ: , パーマリンク