awstatsで携帯端末情報を表示させる方法2


続いて、インプレスR&Dで、提供されているcsvデータから
browser_phone.pmを自動生成するパターン。phpです。


インプレスR&D インターネット総合研究所
http://imri.impressrd.jp/iil/k-taiprofile/?q=k-taiprofile/

データの公開は許可されていないので、上記サイトから取得してください。

<?php
$csv = fopen("UserAgent_2008-08-20.csv", "r");

//through 2 lines
fgetcsv($csv, 1000, ",");

$idOrderArea = "@BrowsersSearchIDOrder = (
'opera',\n";
$idLibArea = "%BrowsersHashIDLib = (
# Common web browsers text
'msie','MS Internet Explorer',
'netscape','Netscape',
'firefox','Firefox',
'svn', 'Subversion client',
'opera', 'Opera',
";

$ids = array();
$pattern = array("/'/", "/\s/", "/-/", "/\./", "/_/", "/\(/", "/\)/");
$rep = array("\'", "\\s", "\-", "\.", "\_", "\(", "\)");
while ($datas = fgetcsv($csv, 1000, ",")) {
    if ($datas[1] === "" || $datas[3] === "") {
        continue;
    }
    if (isset($ids[$datas[3]])) {
        echo $datas[3]. "is duplicate.  \n";
        continue;
        }
        else {
        $ids[$datas[3]] = $datas[0];
}
    $id = preg_replace($pattern, $rep, mb_convert_encoding(strtolower($datas[3]), "UTF-8",
 "Shift_JIS"));
    $name = preg_replace($pattern, $rep, mb_convert_encoding($datas[1], "UTF-8", "Shift_JI
S")). "(".$datas[0] .")";
    $idLibArea .= "'" . $id . "', '" . $name ."',\n";
    $idOrderArea .=  "'" . $id ."',\n";
}
fclose($csv);

$idOrderArea .= ");\n\n";
$idLibArea .= ");";

$filename = "browsers_phone.pm";
if (!$handle = fopen($filename, "w")) {
    echo "Cannot open $filename";
    exit;
}
if (!fwrite($handle, $idOrderArea.$idLibArea)) {
    echo "Cannot write to file ($filename)";
    exit;
}
fclose($handle);
?>

ユーザエージェントが重複する場合は、一つ目だけを有効としています。
バグってたらご指摘をお願いします。


表示されてる例