ある本を参考にして、与えられた文字列の文字コードが有効なものかをboolで返す関数を作りました。そこで3点質問があります。
PHP
1function check(array $data){ 2 $result = true; 3 4 foreach ($data as $key => $value) { 5 if(is_array($value)){ 6 $value = implode("", $value); 7 } 8 if(!mb_check_encoding($value)){ 9 $result = false; 10 break; 11 } 12 } 13 return $result; 14}
(1)引数が配列型であるのは、文字列を一つずつチェックするためだと思いますが、一度に一つの文字列をチェックする方法はないのでしょうか?
(2)関数内にあるmb_check_encodingですが、マニュアルを見ると指定するエンコーディング(ここではutf-8)が第二引数で必要なようですが、何も指定せずに動作するのはなぜでしょうか?
(3)utf-8でない文字列を代入した$jisで、以下のように実行しているのですが、check()の引数に[$jis]と[]がついている理由を教えてください。配列にキャストしているのでしょうか?
PHP
1$word = "こんにちは"; 2$jis = mb_convert_encoding($word, 'Shift-JIS'); 3 4if(check([$jis])){ 5 echo "TRUE"; 6}else{ 7 echo "FALSE"; 8}
つまり上記は
PHP
1$word = "こんにちは"; 2$jis = mb_convert_encoding($word, 'Shift-JIS'); 3$jis = str_split($jis); 4 5if(check($jis)){ 6 echo "TRUE"; 7}else{ 8 echo "FALSE"; 9}
に同じでしょうか?
質問が多くてすみません。一つでもお答えしていただけると幸いです。
どうかよろしくお願いします。

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/29 09:41