1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

?>

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?