[PHP]携帯サイト向けに文字コードを一括変換する

携帯サイトを UTF-8 で書ければ余計な手間がかからなくていいのですが、
古い機種もカバーするとなると未だに Shift-JIS を利用しなければなりません。
加えて全角カタカナを半角カタカナに統一するとなると結構面倒です。

モバイル専用サイトなら全て Shift-JIS で統一するのも手ですが、データベースを
PCサイトと共有しているケースは変換する必要がどうしても出てきます。

かといって echo のたびに mb_convert_encoding と mb_convert_kana を
やっていたのでは埒が明かないので、出力を一時的にバッファリングして一括変換します。
下記のプログラムソースは UTF-8 で書かれ、 Shift-JIS として出力しています。

<?php
mb_internal_encoding("UTF-8");
ob_start('mobile_output');
header("Content-Type: text/html; charset=Shift_JIS");
?>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
    <title>タイトル</title>
  </head>
  <body>
  これはサンプルです。SAMPLE123
  </body>
</html>
<?
ob_end_flush();

function mobile_output($str){
	$str = mb_convert_kana($str, "ka", "UTF-8");
	$str = mb_convert_encoding($str, 'SJIS', 'UTF-8');
	return $str;
}

フォームから GET や POST で受け取るデータは Shift-JIS なので
データベースに格納する場合などは適宜変換して下さい。