<docomo>タグ、<au>タグ、<softbank>タグの使用例
Docomoだけに表示させるドコモタグ(<docomo>〜〜</docomo>)、
auだけに表示させるauタグ(<au>〜〜</au>)、
Softbankだけに表示させるソフトバンクタグ(<softbank>〜〜</softbank>)
の実装方法です。
例えば次のようなHTMLを作ったとします。
<docomo> <div> ここはドコモで表示させたい </div> </docomo> <au> <div> ここはauで表示させたい </div> </au> <softbank> <div> ここはSoftbankで表示させたい </div> </softbank>
このようにした場合のキャリア振り分けのPHPコードは正規表現で次のようにします。
<?php /* ================================ * carrier_tag * * @create 2009-02-16 * @author pentan * @url http://pentan.info/ * * Copyright (c) 2009 pentan.info All Rights Reserved. * 著作権表示部分の変更削除は禁止です * ================================ */ $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/", $agent)){ $body=preg_replace("/<au>(.*)<\/au>/isU","",$body); $body=preg_replace("/<softbank>(.*)<\/softbank>/isU","",$body); }elseif(preg_match("/^(J-PHONE|Vodafone|SoftBank|MOT-)/", $agent)){ $body=preg_replace("/<docomo>(.*)<\/docomo>/isU","",$body); $body=preg_replace("/<au>(.*)<\/au>/isU","",$body); }elseif(preg_match("/^(UP\.Browser|KDDI)/", $agent)){ $body=preg_replace("/<docomo>(.*)<\/docomo>/isU","",$body); $body=preg_replace("/<softbank>(.*)<\/softbank>/isU","",$body); } $body=str_replace("<docomo>","",$body); $body=str_replace("</docomo>","",$body); $body=str_replace("<au>","",$body); $body=str_replace("</au>","",$body); $body=str_replace("<softbank>","",$body); $body=str_replace("</softbank>","",$body);
関数版
PHPでは、次のコードで実装し、出力される前に関数carrier_tag_replace()を通します。
コード
<?php /* ================================ * carrier_tag_replace * * @create 2009/05/29 * @author pentan * @url http://pentan.info/ * * Copyright (c) 2009 pentan.info All Rights Reserved. * 著作権表示部分の変更削除は禁止です * ================================ */ function carrier_tag_replace($body) { $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/", $agent)){ $body=preg_replace("/<au>(.*)<\/au>/isU","",$body); $body=preg_replace("/<softbank>(.*)<\/softbank>/isU","",$body); }elseif(preg_match("/^(J-PHONE|Vodafone|SoftBank|MOT-)/", $agent)){ $body=preg_replace("/<docomo>(.*)<\/docomo>/isU","",$body); $body=preg_replace("/<au>(.*)<\/au>/isU","",$body); }elseif(preg_match("/^(UP\.Browser|KDDI)/", $agent)){ $body=preg_replace("/<docomo>(.*)<\/docomo>/isU","",$body); $body=preg_replace("/<softbank>(.*)<\/softbank>/isU","",$body); } $body=str_replace("<docomo>","",$body); $body=str_replace("</docomo>","",$body); $body=str_replace("<au>","",$body); $body=str_replace("</au>","",$body); $body=str_replace("<softbank>","",$body); $body=str_replace("</softbank>","",$body); return $body; }
例
実行部
<?php if(!($fp = @fopen("index.html","r"))) { die; } $data=""; while (!feof($fp)) { $data.=fgets($fp, 4096); } fclose($fp); $data = carrier_tag_replace($data); echo $data;
テンプレートファイル index.html
<docomo> <div> ここはドコモで表示させたい </div> </docomo> <au> <div> ここはauで表示させたい </div> </au> <softbank> <div> ここはSoftbankで表示させたい </div> </softbank>
出力結果 docomoの場合
<div> ここはドコモで表示させたい </div>
Smartyに実装する方法
Smartyでは、アウトプットフィルターにこの関数を指定することで、出力がフィルタリングされます。
$smarty->register_outputfilter("carrier_tag_replace");
cakePHPに実装する方法
cakePHPでは、afterFilter()にこの関数を指定することで、出力がフィルタリングされます。
cakePHP1.2
app/app_controller.php
<?php class AppController extends Controller{ function afterFilter(){ … … $this->output = carrier_tag_replace($this->output); } }
cakePHP1.1
app/app_controller.php
<?php class AppController extends Controller{ function afterFilter(){ … … $out = carrier_tag_replace($out); ob_start(); echo $out; } }
関連記事
- 電話機の数字ボタンの右下にある「#」は、シャープではありません
- 個体識別番号通知の設定URL
- ドメイン指定受信設定のURL
- Googleなどのサーチエンジンに携帯版サイトを認識させる方法
- Net_UserAgent_Mobile 携帯判別PEARパッケージの使い方と注意点
- ユーザーエージェントからのキャリア、世代判別
- 携帯用クローラーのIPアドレスとユーザーエージェント
- 携帯電話番号の割り振り表 電話番号からキャリア・地域がわかります
- すべての端末で画像表示を同じにする方法
- FireMobileSimulator パソコンで携帯サイトを検証する
- 携帯サイトのmailtoを端末ごとに書き換える関数
- 携帯電話番号の変遷
- 携帯サイトでのmailtoの使い方
- mailto本文での改行 ドコモのN、Pで送信に失敗します
- PCからデコメールを送るときの仕様
- キャリア・クローラーのIP・ユーザーエージェント一覧
- 役に立つかもしれないリンク集
- 裏コマンド(スペシャルモード)
- バッテリーの製造番号 製造の年月がわかります
- 位置情報・GPS情報の取得方法
- 携帯ドメイン一覧 携帯電話キャリア PHSキャリア
- 個体識別情報・UIDの取得方法
- 絵文字一覧 Softbankモバイル(Yahoo!ケータイ)
- 絵文字一覧 Docomo(iモード)
- 絵文字一覧 au(KDDI EZweb)
- auでインラインFLASH
- PHP
- cron実行時の標準出力のメールを飛ばさない方法(cron実行時に毎回メールを飛ばさない)
- サイトの更新情報をPINGサーバに送信する方法
- PCやスマホがネットワーク内にあるかどうかを調べる(在宅かどうかの判断)
- ブラウザの中止ボタンを押した後も処理を実行させる方法 タイムアウト以外の停止
スポンサーリンク