文字エンコードを行うユーザー定義関数cken()
についての備忘録。
- mb_check_encode()を使ってエンコードチェックをsamapA.phpに定義
- foreach文で配列から値に$valueを取り出し、もし入っていた値が配列なら
impode()
を使って値を1個の文字列に連結しておいてから、mb_check_encoding()
- エンコードが不一致の場合、$resultにfalseを代入してforeach文の繰り返しをブレイクする。
- 最終的に$resultが初期値のtrueのままであれば、文字エンコードは正しく、途中でfalseが代入されていれば文字エンコードが一致していないことになる。
samapA.php
//
<?php
function cken(array $data) {
$result = true;
foreach ($data as $key => $value) {
if (is_array($value)) {
$value = implode("", $value);
}
if (!mb_check_encoding($value)) {
$result = false;
break;
}
}
return $result;
}
// 表示用
<?php
require_once("./util.php");
$utf8_string = "こんにちは";
$sjis_string = mb_convert_encoding($utf8_string, 'Shift-JIS');
$encoding = mb_internal_encoding();
if (cken([$sjis_string])) {
echo '配列の値は、' , $encoding, 'です。';
} else {
echo '配列の値は、',$encoding, 'ではありません。';
}