Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】ENT_DISALLOWED定数の使い方

ENT_DISALLOWED定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

ENT_DISALLOWED定数は、HTMLエンティティ化関数において、指定された文字エンコーディングでは不正と見なされる文字をどのように扱うかを制御する定数です。htmlspecialchars()htmlentities()といった関数は、Webページにユーザーからの入力を安全に表示する際に利用され、クロスサイトスクリプティング(XSS)などのセキュリティ脆弱性を防ぐ目的があります。

この定数を指定すると、入力文字列内に含まれる、現在のエンコーディングで解釈できない、いわゆる「不正な文字」が検出された際に、それが代替の文字に変換されます。具体的には、PHP 8.1.0以降では、このような不正なバイトシーケンスはUnicodeの置換文字であるU+FFFD(�)に変換されるようになりました。PHP 8.0までのバージョンでは、数値文字参照(例: �)に変換されていました。この変更は、より一貫性のある文字化け防止とセキュリティ強化を目的としています。

この機能は、異なる文字エンコーディングのデータが混在している可能性がある場合や、ユーザーが意図せず不正な文字を入力した場合に特に有用です。プログラムの実行を中断させることなく、安全かつ視覚的に問題のある文字を識別可能な形式で処理できるため、堅牢なWebアプリケーション開発において重要な役割を果たします。

構文(syntax)

1<?php
2$text_with_invalid_sequence = "これは\x80不正なバイト列を含む文字列です。";
3$sanitized_text = htmlspecialchars($text_with_invalid_sequence, ENT_DISALLOWED, 'UTF-8');
4?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

ENT_DISALLOWED は、HTMLエンティティへの変換時に無効な文字をエンティティに変換しないことを示す整数値です。

関連コンテンツ