htmlentities

関数の概要

htmlentitiesは、PHPで文字列内の特殊文字を対応するHTMLエンティティに変換するための関数です。これにより、HTMLのタグとして解釈されることを防ぎ、安全にブラウザ上に表示できます。Webページでユーザーからの入力を表示する際などに非常に役立ちます。

パラメータの説明

  • string $string – エンティティ変換したい対象の文字列を指定します。
  • int $flags – 変換する際のオプションをビットマスク形式で指定します。省略時は ENT_COMPAT (ダブルクオートのみ変換)となります。
  • string|null $encoding – 文字列の文字エンコーディングを指定します。指定がない場合はdefault_charsetに従います。
  • bool $double_encode – 既にエンティティ化されている部分を再度エンコードするかどうか。デフォルトは true(再エンコードする)。

戻り値

引数で渡した文字列内の特殊文字がHTMLエンティティに変換された新しい文字列を返します。

使用例

基本的な使い方


<?php
$text = 'Tom & Jerry <3 "fun" »';
echo htmlentities($text);
?>

この例では、&や<、"などの特殊文字がエンティティに変換されて、安全にHTML内で表示されます。

UTF-8文字列のエンコード指定


<?php
$text = '© 2024 Example & サンプル';
echo htmlentities($text, ENT_QUOTES, 'UTF-8');
?>

日本語や特殊文字を含むUTF-8文字列を正しく処理するために、encodingパラメータにUTF-8を指定しています。

既にエンティティ化されている部分の再エンコードを防ぐ


<?php
$text = 'Fish & Chips';
echo htmlentities($text, ENT_QUOTES, 'UTF-8', false);
?>

$double_encodefalseにすると、&が既にエンティティ化されている場合は再度変換されず、そのまま出力されます。

関連する関数

  • htmlspecialcharshtmlentitiesより限定的に特殊文字をエンティティ化する関数。主に<>&"'のみ変換。
  • html_entity_decode – エンティティ化された文字列を元の文字列に戻す関数。
  • mb_convert_encoding – 文字列の文字エンコード変換を行う関数。

まとめ

htmlentitiesはWeb開発で必須の関数であり、ユーザー入力や動的に生成される文字列を安全にHTMLで表示する際に使います。パラメータを適切に設定することで、様々な文字コードやケースに対応可能です。用途に応じて、htmlspecialcharsと使い分けることがポイントです。