mb_check_encoding

関数の概要

mb_check_encoding は、指定した文字列が特定の文字エンコーディングに適合しているかどうかを判定するPHPのマルチバイト文字列関数です。複数の文字エンコーディングに対応するWebアプリケーション開発で、文字化け防止や処理の前提確認に役立ちます。

パラメータの説明

  • $var:判定したい文字列を指定します。
  • $encoding(省略可能):チェックする文字エンコーディングを指定します。省略した場合は内部のデフォルトエンコーディングが使われます。

戻り値

文字列が指定した文字コードの形式に合っていれば true、そうでなければ false を返します。

使用例

基本的な使い方

<?php
$str = "こんにちは";
if (mb_check_encoding($str, "UTF-8")) {
    echo "UTF-8の文字列です。";
} else {
    echo "UTF-8ではありません。";
}
?>

日本語の文字列がUTF-8であるかどうかを確認しています。ここでは正しくUTF-8として認識されるため「UTF-8の文字列です。」と表示されます。

エンコーディング指定なしで確認

<?php
$str = "テスト";
var_dump(mb_check_encoding($str)); // 内部エンコーディングで確認
?>

$encodingを省略すると、設定されている内部エンコーディング(mb_internal_encodingの値)で判定されます。内部エンコーディングを変更すると判定結果も変わるため注意が必要です。

Shift_JISでの判定

<?php
$str = mb_convert_encoding("テスト", "Shift_JIS", "UTF-8");
if (mb_check_encoding($str, "Shift_JIS")) {
    echo "Shift_JISで正しい文字列です。";
} else {
    echo "Shift_JISではありません。";
}
?>

UTF-8の文字列をShift_JISに変換し、そのバイト列がShift_JISの形式になっているか判定しています。

関連する関数

  • mb_convert_encoding:文字列の文字コード変換を行う
  • mb_internal_encoding:内部文字エンコーディングの設定・取得
  • mb_detect_encoding:文字列の文字コードを自動検出する

まとめ

mb_check_encoding は、PHPで文字列が指定した文字コードに適合しているか簡単にチェックできる便利な関数です。特にマルチバイト文字を扱うシステムでは、文字コードの整合性を保つために重要な役割を果たします。実務では文字コードの確認やバリデーション処理の一環として活用しましょう。