
photo credit: Akihabara News
なんの因果か、自作PHPフレームワークを携帯サイト対応させています。
携帯サイトを作る手間を軽減したい為なんですが(いっつも同じコードを書くのはしんどい)、調べれば調べる程・・・「実はそのことで別の仕事を増やす羽目になってないか?」と自問自答しながらの進行です。
「別の仕事」とは、携帯電話の進化に伴うフレームワークのメンテナンス作業のこと。
フレームワークで携帯サイトを作れるようになるのはいいのですが、新しい機種や技術が出る度にフレームワークをメンテしないといけないわけで・・・「楽したい」からやっているというのに・・・まさに「地獄めぐり」ですね(w
いまのところ携帯対応方針としては・・・
- XHTMLしか吐かない(FOMA・WIN・3GC)
- 内部エンコードはUTF-8
- とりあえず絵文字のことは知らない
ってな緩さで進行中。
いままでやったのは・・・てか準備しかしてないって感じなんですが・・・
- XHTMLを指定サイズで分割し、書くパート毎に「続きを読む」なリンクをつける・・・というクラスを作る(これは結構しんどかったw)
- 「ケータイ端末プロファイルデータ(無償版)」をもらってきて、データベースにいれる
- 「ケータイ端末プロファイルデータ(無償版)」データベースをつつくクラスを作る
- 「ケータイ端末プロファイルデータ(無償版)」からModify Headersのインポートデータを作る
です。
今日は、その中でもみなさんも使える「Modify Headersのインポートデータを作る」スクリプトを発表しときます。
- 各キャリアの個体識別情報用Header
- User Agent
が揃っているだけですが、いちいち手で作るのは面倒だし、こうすれば全キャリア・全機種のUser Agentがゲットできるってことで。
#!/usr/bin/env php
<?php
$shortopts = "f:H";
$options = getopt($shortopts);
if(isset($options["H"])) {
printUsage();
exit;
}
if(isset($options["f"])) {
$source = $options["f"];
if(!file_exists($source)) {
printUsage();
exit;
}
} else {
printUsage();
exit;
}
if(!mb_ereg("UserAgent_([^.]*).csv",$source,$regs)) {
echo "csv file must be from impressrd.jp.";
exit;
} else {
$version = $regs[1];
// read user agetn file
$ua_handle = fopen($source, "r");
if(!$ua_handle) {
echo "can't open csv file...\n";
exit;
}
}
$xml = "<modifyheaders>";
$xml .= sprintf("<header><action>Add</action><name>X-Dcmguid</name><value>%s</value></header>","A1B2C3D");
$xml .= sprintf("<header><action>Add</action><name>X-Up-Subno</name><value>%s</value></header>","ABCD0123456789_gc.ezweb.ne.jp");
$xml .= sprintf("<header><action>Add</action><name>X-Jphone-Uid</name><value>%s</value></header>","a10Sty5ipolcWgb3");
$count = 0;
while(($line = fgets($ua_handle)) !== FALSE) {
if(!$count) {
$count ++;
continue;
}
$line = mb_ereg_replace("\n","",$line);
$line = mb_ereg_replace("\r","",$line);
$line = mb_convert_encoding($line,"UTF-8","SJIS");
$data = explode(",",$line);
$useragent = $data[3].(($data[4]==" ")?"":$data[4]);
$career = $data[0];
$model = $data[1];
$xml .= sprintf("<header><action>Modify</action><name>USER-AGENT</name><value>%s</value></header>",$useragent);
$count ++;
}
$xml .= "</modifyheaders>";
fclose($ua_handle);
file_put_contents("modifyheaders.xml",$xml);
exit;
function printUsage() {
echo "Usage: php createImportData.php -f <useragetn csv file>\n";
echo " -f : csv file for import\n";
echo " -H : help\n";
}
?>
インポートにはちょっと時間がかかりますが、手でいちいちデータつくるのを繰り返すよりはいいはず。
Smartyとか使えばいいのですが、ここは面倒なのでハードコード。
お試しあれ。
