PHPで拡張子を出し分けし、携帯全機種で画像を表示する方法
    このエントリをはてなブックマークに登録

ケータイサイトを開発する上でやっかいな問題の一つに、キャリアや機種によって表示できない画像フォーマットがあるという点があります。

今回ご紹介するのは、機種によって画像の拡張子を置き換え、全ての端末で画像を正しく表示するためのPHPサンプルプログラムです。
あくまで拡張子を置換するだけですので、あらかじめ画像をアップロードする際に、「JPG」「GIF」「PNG」と3種類の画像を設置する必要があります。

 

ユーザエージェントで画像の拡張子を置換するサンプルプログラム

// 対象となる画像ファイル名をセット
$filename = 'testimage.jpg';

// 拡張子を取得
$ext = substr($filename, -4);

// ユーザエージェントの取得
$agent = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/^DoCoMo/', $agent)) {
	// DoCoMoの場合
	if ('.png' == $ext) {
		// 「.png」→「.gif」に置換
		$ext = '.gif';
	} elseif ('.jpg' == $ext) {
		$nglist = '501i|502i|821i|209i|651i|691i|671i|210i
|F503i|SO503i|D503i|F211i|D211i'; // ※実際には1行で入力
		$pattern = "/^DoCoMo\\/1\\.0\\/.*($nglist)/";
		if (preg_match($pattern, $agent)) {
			// 「.jpg」→「.gif」に置換
			$ext = '.gif';
		}
	}
} elseif (preg_match('/^J-PHONE/', $agent)) {
	// ソフトバンク3G以前の場合
	if ('.gif' == $ext) {
		// 「.gif」→「.png」に置換
		$ext = '.png';
	}
}

// 出力
echo substr($filename, 0, -4) . $ext;

※表示の都合上、改行をいれています

 

次のルールで置換を行っています。

  • ドコモはPNGを表示できないため「.gif」に置換
  • ドコモのJPG非対応機種は「.gif」に置換
  • ソフトバンクの3G以前の機種はGIFを表示できないため「.png」に置換

厳密な機種判定を行っているわけではないので、多少ルーズな処理ですが、ひとまずこれで「画像が表示されない」というケースは避けることができるはずです。

 

関連:


 

最近の記事







コメントを書く