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); ?>
ユーザエージェントが重複する場合は、一つ目だけを有効としています。
バグってたらご指摘をお願いします。