• ベストアンサー

キャリア判別

キャリア判別するため見よう見まねで以下の通りindex.phpを作成しまして、i,e,sのフォルダにそれぞれindex.htmlを入れまいが、真白で 何も映りません、なぜでしょうか?教えてください。 <?php $ua = $_SERVER['HTTP_USER_AGENT']; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN"><HEAD> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="cache-control" content="max-age=0"> <META name="keyword" content=""> <META name="description" content=""> <META name="robots"content="index,follow"> </HEAD> <body> <?php switch(TRUE){ case preg_match("/^DoCoMo\/2\.0/i", $ua): case preg_match("/^DoCoMo\/1\.0/i", $ua): $carrier = "i"; break; case preg_match("/^SoftBank/i", $ua): case preg_match("/^J\-PHONE/i", $ua): case preg_match("/^Vodafone/i", $ua): case preg_match("/^MOT/i", $ua): $carrier = "s"; break; case preg_match("/^KDDI\-/i", $ua): case preg_match("/^UP.Browser/i", $ua): $carrier = "e"; break; default: $carrier = "pc"; break; } $html_filename = "index.html"; $html_filepath = "templates/" .carriers. "/" .$html_filename; $output = @file_get_contents($html_filepath); echo $output; ?> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
  • atse
  • ベストアンサー率83% (36/43)
回答No.1

> i,e,sのフォルダにそれぞれindex.html PC用のフォルダも用意していますか? 用意していなければ、PCで見ても何も表示されません。 > $html_filepath = "templates/" .carriers. "/" .$html_filename; carriers は $carrier の間違いかな。 templatesフォルダの中に各キャリアフォルダを用意していることを確認する。 あとは $html_filepath とかもちゃんと中身を見ればわかるかと思いますよ。

kurobon619
質問者

補足

atseさんありがとうございます。 >carriers は $carrier の間違いかな。 これは間違えでした。後フォルダのtempletsを考慮に入れてなかった という単純ミスです。 ようやくテキスト映ることができましたが、画像をiならiのフォルダに中にいれ img srcもちゃんといれたのに×になっています。これはもうPHPの問題ではないとおもいますがどうしてでしょうか?

その他の回答 (4)

  • tk_uc
  • ベストアンサー率68% (33/48)
回答No.5

ところで、PEAR::Net_UserAgent_Mobileを使うのも手ですよ。 よくメンテされているように見受けられます。

kurobon619
質問者

お礼

なるほどPEAR::Net_UserAgent_Mobileですか。 tk_ucさんありがとうございます。

  • tk_uc
  • ベストアンサー率68% (33/48)
回答No.4

phpで画面真っ白なら、とりあえずはPHPがエラーになっているもののエラー出力されない設定になっている、という可能性を疑いましょう。 WEBサーバーのエラーログを見るか、 ini_set( "display_errors", "On"); か error_reporting(E_ALL); を先頭の方に追加してエラー表示されないか再実行して確認。 その際、@file_get_contentsの@も外しておくこと。

noname#90314
noname#90314
回答No.3

$html_filepath = "templates/" .carriers. "/" .$html_filename; carreiers => $carriers になっていないため アウト! とか・・・ PCでみていて PC用ディレクトリがないため アウト! とか・・・

kurobon619
質問者

お礼

carreiers => $carriers になっていないため アウト! でした。 hm_kitさんありがとうございます。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

preg_match()の戻り値は真・偽ではありません。 見つからなかった特は0、見つかったときは1以上です。 よって switch($ua){ case (preg_match("/^DoCoMo\/2\.0/i", $ua) > 0): case (preg_match("/^DoCoMo\/1\.0/i", $ua) > 0): $carrier = "i"; break; ではないでしょうか? それともswitch(TRUE){ って聞き方もあるのでしたっけ?

kurobon619
質問者

お礼

単純なミスでした。 switch(TRUE){ でも大丈夫みたいです。 yyr446さんありがとうございます。

関連するQ&A

専門家に質問してみよう