- ベストアンサー
キャリア判別
キャリア判別するため見よう見まねで以下の通り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>
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> i,e,sのフォルダにそれぞれindex.html PC用のフォルダも用意していますか? 用意していなければ、PCで見ても何も表示されません。 > $html_filepath = "templates/" .carriers. "/" .$html_filename; carriers は $carrier の間違いかな。 templatesフォルダの中に各キャリアフォルダを用意していることを確認する。 あとは $html_filepath とかもちゃんと中身を見ればわかるかと思いますよ。
その他の回答 (4)
- tk_uc
- ベストアンサー率68% (33/48)
ところで、PEAR::Net_UserAgent_Mobileを使うのも手ですよ。 よくメンテされているように見受けられます。
お礼
なるほどPEAR::Net_UserAgent_Mobileですか。 tk_ucさんありがとうございます。
- tk_uc
- ベストアンサー率68% (33/48)
phpで画面真っ白なら、とりあえずはPHPがエラーになっているもののエラー出力されない設定になっている、という可能性を疑いましょう。 WEBサーバーのエラーログを見るか、 ini_set( "display_errors", "On"); か error_reporting(E_ALL); を先頭の方に追加してエラー表示されないか再実行して確認。 その際、@file_get_contentsの@も外しておくこと。
$html_filepath = "templates/" .carriers. "/" .$html_filename; carreiers => $carriers になっていないため アウト! とか・・・ PCでみていて PC用ディレクトリがないため アウト! とか・・・
お礼
carreiers => $carriers になっていないため アウト! でした。 hm_kitさんありがとうございます。
- yyr446
- ベストアンサー率65% (870/1330)
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){ って聞き方もあるのでしたっけ?
お礼
単純なミスでした。 switch(TRUE){ でも大丈夫みたいです。 yyr446さんありがとうございます。
補足
atseさんありがとうございます。 >carriers は $carrier の間違いかな。 これは間違えでした。後フォルダのtempletsを考慮に入れてなかった という単純ミスです。 ようやくテキスト映ることができましたが、画像をiならiのフォルダに中にいれ img srcもちゃんといれたのに×になっています。これはもうPHPの問題ではないとおもいますがどうしてでしょうか?