My Photo

« 第70期順位戦B級2組最終戦、タナトラ降級 #shogi | Main | 学者上げてないけどSVローファー+1完成 #FF11 »

March 10, 2012

PHPメモ018:エンコーディング関連の関数 その1

array mb_list_encodings()
サポートするすべてのエンコーディングの配列を返す。

bool mb_check_encoding(<文字列>, <エンコーディング>)
文字列が指定したエンコーディングかを判定する。

サンプルーコード
$encodings = mb_list_encodings();
dispArray($encodings);

$str = 'こんにちは';
echo mb_check_encoding($str, 'UTF-8') ? "UTF-8\n" : "UTF-8以外\n";
サンプルコードの出力
[0]=>pass,[1]=>auto,[2]=>wchar,[3]=>byte2be,[4]=>byte2le,[5]=>byte4be,[6]=>byte4le,[7]=>BASE64,[8]=>UUENCODE,[9]=>HTML-ENTITIES,[10]=>Quoted-Printable,[11]=>7bit,[12]=>8bit,[13]=>UCS-4,[14]=>UCS-4BE,[15]=>UCS-4LE,[16]=>UCS-2,[17]=>UCS-2BE,[18]=>UCS-2LE,[19]=>UTF-32,[20]=>UTF-32BE,[21]=>UTF-32LE,[22]=>UTF-16,[23]=>UTF-16BE,[24]=>UTF-16LE,[25]=>UTF-8,[26]=>UTF-7,[27]=>UTF7-IMAP,[28]=>ASCII,[29]=>EUC-JP,[30]=>SJIS,[31]=>eucJP-win,[32]=>SJIS-win,[33]=>CP51932,[34]=>JIS,[35]=>ISO-2022-JP,[36]=>ISO-2022-JP-MS,[37]=>Windows-1252,[38]=>ISO-8859-1,[39]=>ISO-8859-2,[40]=>ISO-8859-3,[41]=>ISO-8859-4,[42]=>ISO-8859-5,[43]=>ISO-8859-6,[44]=>ISO-8859-7,[45]=>ISO-8859-8,[46]=>ISO-8859-9,[47]=>ISO-8859-10,[48]=>ISO-8859-13,[49]=>ISO-8859-14,[50]=>ISO-8859-15,[51]=>ISO-8859-16,[52]=>EUC-CN,[53]=>CP936,[54]=>HZ,[55]=>EUC-TW,[56]=>BIG-5,[57]=>EUC-KR,[58]=>UHC,[59]=>ISO-2022-KR,[60]=>Windows-1251,[61]=>CP866,[62]=>KOI8-R,[63]=>ArmSCII-8,
UTF-8

string mb_detect_encoding(<文字列>, [<エンコーディングリスト>])
文字列のエンコーディングの検出を試みる。エンコーディングリストは配列かカンマ区切りの文字列で、省略された場合のデフォルトはUTF-8とASCII。
戻り値は検出されたエンコーディング。検出できなかった場合はFALSE。

サンプルーコード
$str = 'こんにちは';
echo mb_detect_encoding($str, mb_list_encodings());
echo "\n";
echo mb_detect_encoding($str, 'UTF-8,EUC,SJIS');
サンプルコードの出力
UTF-8
UTF-8

string mb_convert_encoding(<文字列>, <変換先エンコーディング>[, <変換元エンコーディング>)
文字列を変換元エンコーディングから変換先エンコーディングに変換して返す。変換元エンコーディングが省略された場合のデフォルトは内部エンコーディング。

サンプルーコード
$str = 'こんにちは';
echo $str;
echo "\n";
echo mb_convert_encoding($str, 'SJIS');
サンプルコードの出力
こんにちは
???ノ???ヘ

string mb_convert_variables(<変換先エンコーディング>, <変換元エンコーディング>, <文字列変数>)
変数の文字列を指定したエンコーディングで変換する。文字列変数には変数、配列、オブジェクトを使用できる。
戻り値は変換前のエンコーディング。変換に失敗した場合はFALSE。

サンプルーコード
$str1 = 'こんにちは';
if (FALSE !== mb_convert_variables('SJIS', 'UTF-8', $str1)) {
	echo $str1 . "\n";
} else {
	echo '$str1' . ":変換失敗\n";
}

$str2 = array('明治', '大正', '昭和', '平成');
if (FALSE !== mb_convert_variables('SJIS', 'UTF-8', $str2)) {
	dispArray($str2);
} else {
	echo '$str2' . ":変換失敗\n";
}
サンプルコードの出力
???ノ???ヘ
[0]=>????,[1]=>?吳,[2]=>???a,[3]=>????,

mixed mb_substitute_character([<代替文字>])
変換できなかった文字の代わりとして出力する文字を指定する。引数無しの場合は代替文字を出力する。代替文字はUnicode値の整数で指定する。また"none"とした場合は代替文字を出力しない。
戻り値は引数がある場合は設定に成功した場合はTRUE、そうでない場合はFALSE。引数がない場合はUnicode値。

サンプルーコード
echo mb_substitue_character();
サンプルコードの出力
63

« 第70期順位戦B級2組最終戦、タナトラ降級 #shogi | Main | 学者上げてないけどSVローファー+1完成 #FF11 »

PHP」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54187215

Listed below are links to weblogs that reference PHPメモ018:エンコーディング関連の関数 その1:

« 第70期順位戦B級2組最終戦、タナトラ降級 #shogi | Main | 学者上げてないけどSVローファー+1完成 #FF11 »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof