<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やスマホがネットワーク内にあるかどうかを調べる(在宅かどうかの判断)
- ブラウザの中止ボタンを押した後も処理を実行させる方法 タイムアウト以外の停止
スポンサーリンク





