
宜しくお願い致します。
現在モバイルサイトを構築しており、PHP+Smartyを利用しているのですが、テンプレート内で"if文"を利用した(ユーザーエージェントによる)キャリア振り分けをしたいと考えています。
ロジックとしては、PHPファイル内でユーザーエージェントを取得し、変数に適当な値を入れる。
その変数をassignし、テンプレート内ではき出す際に条件分岐。
と考えているのですが、うまくいきません。
ご教授いただけましたら幸いです。
なお、ソースは下記のようになります。
【carrier.php】※ディレクトリーの指定など一部省略
$agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/^DoCoMo/i", $agent)){
$ca == "i";
}else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){
$ca == "ez";
}else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){
$ca == "sb";
}else {
$ca == "pc";
}
$tpl->assign('ca','$ca');
$tpl->display('carrier.html');
【carrier.html】
{if $ca == "ez"}ezです{/if}
No.4ベストアンサー
- 回答日時:
あとは…
$tpl->assign('ca','$ca');
が
$tpl->assign('ca', $ca);
じゃないとezとは入らないですね。
一度構文を復習した方がいいような。
==を=にし、''をはずしたらできました!
''のところは
(php)
$test = mt_rand();
$tpl->assign('rdm','$rdm');
(tpl)
{{assign var=mynum value=1|rand:100}}
{{$mynum}}
とやったら表示されたので、これでもいいのかと思ってました…
勉強不足ですね、ありがとうございました!!
No.3
- 回答日時:
$ca == "i";
これが、イコール2つで代入になってないのでは?
御返答ありがとうございます。
イコール1つでもやはりだめですね。。。
smartyを使わずにPHPファイルを読み込んで、$ca==ez;とかの代わりにechoで吐き出せば問題なく表示されるのですよ。
smartyを利用して、テンプレート側で条件を分けたいのですが・・・
No.2
- 回答日時:
PEARのNet_UserAgent_Mobile使えばいい。
ついでにテンプレートでこんな表示方式の変更をする?
キャリアごとにテンプレート作って呼び出すテンプレートを
変えた方がいいと思うけど
御返答ありがとうございます。
さっそくPEARの方を調べてみます。
基本的に3キャリア対応でコーディングしているので、分けたいのはごく一部なんですよ。。
その場合はsmartyでちょこっと書いた方が楽ですね。
No.1
- 回答日時:
正規表現のとこがあやしいような気がします。
とりあえず、うちで動いてるコード張っておきます。
厳密にいえばアドレス帯の判定しなければならないみたいです。
$agent=$_SERVER["HTTP_USER_AGENT"];
//DoCoMoの処理
if (strstr($agent,"DoCoMo")){
$career="docomo";
//キャリア設定
//AUの処理
}else if(strstr($agent,"UP.Browser")){
$career="au";
}else if(strstr($agent,"SoftBank") or strstr($agent,"Vodafone") or strstr($agent,"J-PHONE") ){
//そうではなくて、もしユーザーエージェントにSoftBankを含むなら
$career = "softbank";
}else{
$career = "pc";
}
御返答ありがとうございます。
普通にPHPで呼び出して、$career="au";の代わりにecho "ezです";とやれば、キャリアによって"docomoです"、"ezです"のように条件わけできるんですけどね…
smartyを利用して、html内で条件分岐したのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- その他(プログラミング・Web制作) pythonのDjangoでHTML内で変数を利用したいです 3 2022/05/15 15:33
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マルチバイトの文字列の検索方法
-
http://とhttps://のどちらでも...
-
PHPで あるフォルダ内の、特定...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
Excel関数「COUNTIF」で”文字”...
-
改行を読み飛ばす
-
検索エンジンにみつかりたくな...
-
全角括弧と全角読点の間隔を狭...
-
文字化け変換方法
-
コンボボックスの項目中に改行を
-
改行について
-
itextで改行するには
-
C++で空Enterの入力を判...
-
ホームページの登録で改行がで...
-
mcryptで英数字(12未満)のみに...
-
COBOLの改行
-
ファイルから読み取った改行文...
-
エスケープされたunicodeのデコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで<a>タグ内からURLと文字を...
-
VBAを使ってHTMLソースから特定...
-
preg_matchでエラーが出ます。
-
PHPで変数から1行目だけを取得...
-
、"(ダブルクォーテーション)...
-
正規表現で「0」のみ抽出
-
電話番号のチェック ハイフン...
-
Smartyで部分一致
-
正規表現でシングルクォーテー...
-
正規表現パターンの記入方法に...
-
preg_matchの正規表現で
-
PHPで あるフォルダ内の、特定...
-
phpでhtmlソースを解析し、文字...
-
PHPメールフォーム URLと半角...
-
正規表現 画像リンクのaltの取得
-
phpで文字列に"や'などが含まれ...
-
正規表現で切り出せません。 <...
-
「半角数字」と「+」を許可する...
-
C#でのワイルドカードを使った...
-
http://とhttps://のどちらでも...
おすすめ情報