PHP

mb_convert_encodingとmb_convert_variablesの違い


mb_convert_encoding

文字列の文字コードを変換する


記述方法

mb_convert_encoding(変換する文字列,変換後の文字コード,変換前の文字コード)


返り値

変換した文字列


特徴

文字列を直接渡しできる

公式リファレンス


mb_convert_variables

文字列、配列、オブジェクトの文字コードを変換する


記述方法

mb_convert_variables(変換後の文字コード,変換前の文字コード,変換する文字列or配列orオブジェクト)


返り値

成功した場合は変換前の文字コード

失敗した場合はFALSE


特徴

文字列を直接渡しできない

参照渡しのみ

公式リファレンス


試してみる

上記のような違いがあるので実際に関数を使って試してみます

UTF-8からEUCに変換したいと思います


mb_convert.php

<?php

// encoding

// 文字列
$str = "あいうえお";
echo "before [${str}]"."\n"; // before [あいうえお]←UTF-8

echo mb_convert_encoding("あいうえお","EUC-JP","UTF-8")."\n"; // あいうえお←EUC

echo mb_convert_encoding($str,"EUC-JP","UTF-8")."\n"; // あいうえお←EUC

// 配列
$array = ["あ", "い", "う"];

echo "before [${array[0]}]"."\n"; // before [あ]←UTF-8

echo mb_convert_encoding($array,"EUC-JP","UTF-8")."\n"; // Warning: mb_convert_encoding() expects parameter 1 to be string, array given in ***

// variables

// 文字列
$str = "かきくけこ";

echo "before [${str}]"."\n"; // before [かきくけこ]←UTF-8

echo mb_convert_variables("EUC-JP","UTF-8", "かきくけこ")."\n"; // Fatal error: Only variables can be passed by reference in ***

echo mb_convert_variables("EUC-JP","UTF-8", $str)."\n"; // UTF-8
echo "after [${str}]"."\n"; // after [かきくけこ]←EUC

// 配列

echo "before [${array[0]}]"."\n"; // before [あ]←UTF-8

echo mb_convert_variables("EUC-JP","UTF-8", $array[0])."\n"; // UTF-8

echo "after [${array[0]}]"."\n"; // after [あ]←EUC

?>


見やすいように書きたかったのですが上手くできませんでした...