うごくひと2。(初投稿) 
はじめまして!今年から新卒で入社したつっしーです。
のびーにょさんの後輩になります。
早く業務に慣れて活躍できるようになるのが目標ですが、会社のプログラムは、学生時代に僕が触ってきたプログラムと比べて、とても複雑・・・早く慣れたいなぁ。
今、「うごくひと2」という携帯アクセス解析ツールについて調べています。
うごくひと2は、通常版を使う場合、解析対象ページに
<img src="**********?u=********&guid=ON&ut=*&h=********" alt="携帯アクセス解析" height="1" width="1" />
このコードを追加するだけなのですが、今回は上級版を使おうと思います。
まず、通常版コードのURLとパラメータを正規表現を使って抽出し、serialize関数を使ってシリアル化します。
//url抽出
$tag_regex = '/<img \s[^/>]*?src\s*=["\'](([^\"]*)[^>]*)[/]/i';
preg_match($tag_regex,$_POST['bic_analytics'], $matches);
//urlのみ取得
$url_regex = '/http[^\?]*/';
preg_match($url_regex,$matches[2],$matcheurl);
$param_bic = array();
$param_bic[url] = $matcheurl[0];
//URLを分解して配列で返す
$strtest = parse_url($matches[2]);
//パラメータ取得
foreach($strtest as $key => $var){
if($key == 'query'){
$keyword = explode('&', $var);
foreach($keyword as $vval){
$bic = explode('=',$vval);
if($bic[0] != 'guid'){
$param_bic[$bic[0]] = $bic[1];
}
}
}
}
$bic_analytics = serialize($param_bic);
正規表現で通常版コードの中の必要な部分を抽出してシリアル化してます。
URLのパラメータ抽出も正規表現で抽出しようかと思いましたが、parse_url関数を使ったほうがいいよ、という助言をいただいたので使っています、実際そのほうが簡単でした。
$param_bicの中はこうなってます。
Array ( [url] => ************ [u] => ******* [ut] => * [h] => ****** )
これをserializeするとこうなります。
a:4:{s:3:"url";s:1:"************";s:1:"u";s:1:"*******";s:*:"ut";
s:1:"*";s:1:"h";s:1:******";}
これをunserializeしたら元に戻ります。
この各要素を、上級版コードのURLに入れていきます
$ret = $_POST['bic_analytics'];
//unserializeして元の配列に戻す。
$arrBic = unserialize($ret);
//配列の要素をURLに入れる。
$UH2url = $arrBic['url'].'?u='.$arrBic['u'].'&h='.$arrBic['h'].'&ut='.$arrBic['ut'].'&guid=ON&qM=';
$UH2url .= urlencode(isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'').'|Az|'.(int)($_SERVER['SERVER_PORT']);
$UH2url .= '|'.urlencode($_SERVER['HTTP_HOST']).'|'.urlencode($_SERVER['REQUEST_URI']);
$UH2url .= '|H|&ch=UTF-8&sb='.urlencode('[page title]');
print '<img src="'.$UH2url.'" alt="携帯アクセス解析" width="1" height="1" border="0" />';
こんな感じで上級版コードを作ります。
まだまだ未熟ですが、今後もよろしくお願いします。
