PHPのmb_encoding_aliases()関数で既知のエンコーディングのエイリアス(別名)を取得する方法
PHPには、既知のエンコーディングタイプが持つエイリアス(別名)を取得するためのmb_encoding_aliases()関数が用意されています。この関数は、PHP 5以降のバージョンで利用可能です。
たとえば「ASCII」というエンコーディングには「US-ASCII」「ISO646-US」「cp367」など、複数の別名が存在します。mb_encoding_aliases()を使えば、こうした別名を一括して配列として取得できます。
構文
array mb_encoding_aliases(str $encoding)
パラメータ
この関数が受け取るパラメータは1つだけです。
- $encoding: エイリアスを調べたいエンコーディングタイプの名前を指定します。
戻り値
成功した場合は、エンコーディングのエイリアスを格納した数値インデックスの配列を返します。失敗した場合はFalseを返します。
エラーと例外
指定したエンコーディングが不明(存在しない)な場合、E_WARNINGレベルのエラーが発生します。そのため、実行前にmb_list_encodings()で有効なエンコーディング一覧を取得し、存在チェックを行うのが安全です。
使用例1: 存在チェックをしてからエイリアスを取得
次の例では、まずmb_list_encodings()で既知のエンコーディング一覧を取得し、指定したエンコーディングが存在するかどうかを確認してから、エイリアスを取得しています。
<?php
$encoding = 'ASCII';
$known_encodings = mb_list_encodings();
if (in_array($encoding, $known_encodings))
{
$aliases = mb_encoding_aliases($encoding);
print_r($aliases);
}
else
{
echo "Unknown ($encoding) encoding.\n";
}
?>出力結果
Array ( [0] => ANSI_X3.4-1968 [1] => iso-ir-6 [2] => ANSI_X3.4-1986 [3] => ISO_646.irv:1991 [4] => US-ASCII [5] => ISO646-US [6] => us [7] => IBM367 [8] => IBM-367 [9] => cp367 [10] => csASCII )
このように、「ASCII」に対して11個のエイリアスが配列として返されていることがわかります。
使用例2: var_dump()で結果を確認
var_dump()を使うと、各要素のデータ型や文字列の長さまで詳細に確認できます。
<?php
$array = mb_encoding_aliases("ASCII");
var_dump($array);
?>出力結果
array(11) {
[0]=>
string(14) "ANSI_X3.4-1968"
[1]=>
string(8) "iso-ir-6"
[2]=>
string(14) "ANSI_X3.4-1986"
[3]=>
string(16) "ISO_646.irv:1991"
[4]=>
string(8) "US-ASCII"
[5]=>
string(9) "ISO646-US"
[6]=>
string(2) "us"
[7]=>
string(6) "IBM367"
[8]=>
string(7) "IBM-367"
[9]=>
string(5) "cp367"
[10]=>
string(7) "csASCII"
}まとめ
mb_encoding_aliases()は、マルチバイト文字列処理(mbstring)拡張モジュールの一部として提供される関数で、エンコーディング名の別名を簡単に取得できます。ユーザー入力されたエンコーディング名を正規化したい場合や、対応エンコーディングの一覧を表示したい場合などに活用すると便利です。
-
PHPでランダム文字列を生成する方法【初心者向けサンプルコード付き】
PHPでランダムな文字列を生成するには、いくつかの方法があります。本記事では、md5() 関数と mt_rand() 関数を組み合わせたシンプルな手法と、PHP 7以降で利用できる暗号学的に安全な random_bytes() 関数を使った方法を、サンプルコードと実行結果とともに解説します。 例1:md5() と mt_rand() を組み合わせる方法 mt_rand() で生成した乱数を md5() でハッシュ化し、substr() で先頭5文字を切り出すことで、ランダムな文字列を作成します。 <?php $res = substr(md5(mt_rand()
-
PHPで変数名を文字列として取得する方法をわかりやすく解説
PHPでは、可変変数や $GLOBALS スーパーグローバル配列を活用することで、変数名を文字列として扱ったり、値から変数名を逆引きしたりすることができます。ここでは、具体的なコード例をもとにその方法を解説します。 例1:可変変数を使って文字列を変数名として扱う まずは、可変変数($$)を使用した基本的な例です。変数の値が、そのまま別の変数の「名前」として機能します。 <?php $a = This is it!; $$a = Demo string!; print($a); ?> 出力結果 上記のコードを実行すると、次のような出力が得られます。 T