PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのhtmlentities()関数とは?構文・パラメータ・使い方を徹底解説


htmlentities()関数は、適用可能なすべての文字をHTMLエンティティに変換するための関数です。ユーザー入力を安全に表示したい場合や、HTMLタグをそのまま文字列として出力したい場合などに活用され、XSS(クロスサイトスクリプティング)対策としても重要な役割を果たします。

構文

htmlentities(str, flags, character-set, double_encode)

パラメータ

  • str − 変換対象となる文字列を指定します。

  • flags − 引用符の扱い、無効なエンコーディングへの対応方法、および使用するドキュメントタイプを指定します。

  • 利用可能な引用スタイルは以下の通りです。

    • ENT_COMPAT − デフォルト。二重引用符のみをエンコードします。

    • ENT_QUOTES − 二重引用符と単一引用符の両方をエンコードします。

    • ENT_NOQUOTES − いかなる引用符もエンコードしません。

  • 無効なエンコーディングへの対応:

    • ENT_IGNORE − 空文字列を返す代わりに、無効なエンコーディングを無視します。セキュリティ上の問題につながる可能性があるため、使用は避けるべきです。

    • ENT_SUBSTITUTE − 空文字列を返す代わりに、指定した文字セットに対する無効なエンコーディングを、Unicode置換文字U+FFFD(UTF-8)または&#FFFD;に置き換えます。

    • ENT_DISALLOWED − 指定されたDOCTYPEにおいて無効なコードポイントを、Unicode置換文字U+FFFD(UTF-8)または&#FFFD;に置き換えます。

  • 使用するDOCTYPEを指定するための追加フラグは以下の通りです。

    • ENT_HTML401 − デフォルト。HTML 4.01としてコードを処理します。

    • ENT_HTML5 − HTML 5としてコードを処理します。

    • ENT_XML1 − XML 1としてコードを処理します。

    • ENT_XHTML − XHTMLとしてコードを処理します。

  • character-set − 使用する文字セットを指定します。

  • 指定できる値は以下の通りです。

    • UTF-8 − デフォルト。ASCII互換のマルチバイト8ビットUnicode。

    • ISO-8859-1 − 西ヨーロッパ言語。

    • ISO-8859-15 − 西ヨーロッパ言語(ユーロ記号、およびISO-8859-1に含まれていないフランス語・フィンランド語の文字を追加)。

    • cp866 − DOS専用のキリル文字セット。

    • cp1251 − Windows専用のキリル文字セット。

    • cp1252 − Windows専用の西ヨーロッパ言語文字セット。

    • KOI8-R − ロシア語。

    • BIG5 − 繁体字中国語(主に台湾で使用)。

    • GB2312 − 簡体字中国語(中国の国家標準文字セット)。

    • BIG5-HKSCS − 香港拡張を含むBig5。

    • Shift_JIS − 日本語。

    • EUC-JP − 日本語。

    • MacRoman − Mac OSで使用されていた文字セット。

  • double_encode − 既存のHTMLエンティティをさらにエンコードするかどうかを指定する真偽値です。

    • TRUE − デフォルト。すべての文字を変換します。

    • FALSE − 既存のHTMLエンティティはエンコードしません。

戻り値

htmlentities()関数は、変換後の文字列を返します。

使用例

以下に具体的な使用例を示します。

<?php
$s = "クリケットは<b>インド</b>における'宗教'のような存在です";
echo htmlentities($s);
echo "\n";
echo htmlentities($s, ENT_QUOTES);
?>

出力結果

クリケットは<b>インド</b>における'宗教'のような存在です
クリケットは<b>インド</b>における&#039;宗教&#039;のような存在です

この例からわかるように、デフォルト設定(ENT_COMPAT)では二重引用符のみが変換され、単一引用符はそのまま出力されます。一方、ENT_QUOTESを指定すると、単一引用符も「&#039;」に変換されます。Webアプリケーション開発では、ユーザー入力を画面に表示する前にこの関数で変換することで、悪意あるスクリプトの実行を防ぐことができます。


  1. PHPのmax()関数とは?配列・複数の値から最大値を取得する方法を解説

    max()関数の定義と用途PHPのmax()関数は、配列の中から最も大きい要素、または2つ以上のカンマ区切りの引数の中から最大の値を返す組み込み関数です。数値だけでなく文字列の比較にも対応しており、さまざまな場面で活用できます。構文配列を引数として渡す場合:max ( array $values ) : mixedまたは複数の値を直接渡す場合:max ( mixed $value1 [, mixed $... ] ) : mixedパラメータNo.パラメータと説明1values引数が1つだけ指定された場合は、同じ型または異なる型の値を含む配列を渡す必要があります。2value1, value2

  2. PHPのhtmlspecialchars()関数の使い方!特殊文字をHTMLエンティティへ変換する方法

    htmlspecialchars() 関数は、PHPの組み込み関数の一つで、特殊文字をHTMLエンティティに変換するために使用されます。ユーザー入力をHTMLに出力する際のXSS(クロスサイトスクリプティング)対策として広く活用されている、非常に重要な関数です。 変換される特殊文字 この関数では、以下の定義済み文字が変換対象となります。 &(アンパサンド)→ &amp; (ダブルクォート)→ &quot; (シングルクォート)→ &#039; <(小なり記号)→ &lt; >(大なり記号)→ &gt; 構文 htmlspecial