2009年3月26日木曜日

PHPで携帯キャリア判別(Net_UserAgent_Mobile)

PHPで携帯のキャリア判別をするには、Net_UserAgent_MobileというPEARモジュールを使えば楽に判別ができる。

使い方は以下のサイトが参考になりました。
http://www.phppro.jp/school/pear/vol10/1


ためしに、携帯のUserAgentでget_browser()やNet_UserAgent_Detectを使って情報を取得しようとしてもほとんど使えない状態だったので、素直にNet_UserAgent_Mobileを使ったほうがいいでしょう。
isMoblie()というメソッドが用意されているので、とりあえず、携帯とそれ以外の端末を判別しておいて、携帯以外の場合はget_browser()やNet_UserAgent_Detectを使ってプラットフォームを取得すればいい。

FirefoxでUserAgent切り替え

Firefoxで携帯サイトをなどなど確認するときに便利なアドオン『User Agent Switcher』

以下のページからインストールできる。

https://addons.mozilla.org/ja/firefox/addon/59

User Agent Switcherにインポートできるリストを公開されている方がいました。
http://blog.cgfm.jp/garyu/archives/112

感謝

PHPでブラウザ判別(get_browser() & Net_User_Agent_Detect)

PHPにはブラウザ判別に利用できるget_browser()という組込み関数が標準で用意されている。
ただ、そのままの環境では使えないので、事前にいくつか用意が必要なのでメモ。


(その1)
Browser Capabilities Projectphp_browscap.iniをダウンロードして、サーバに配置。
(その2)
php.iniに以下を追記
-----ここから-----
[browscap]
browscap =/path/to/php_browscap.ini
-----ここまで-----

php.inではなく、.htaccessで以下のように記述しても動かないので注意。
-----ここから-----
php_value browscap /path/to/php_browscap.ini
-----ここまで-----

(その3)
HTTPサーバを再起動

PHPサンプル
-----ソース-----

<?php
$platform = get_browser(null, true);
print_r($platform);
?>


-----ここまで-----

----出力-----

Array
(
[browser_name_regex] => ^mozilla/5\.0 (windows; u; windows nt 5\.1; .*) applewebkit/.* (khtml, like gecko) chrome/1\.0\..* safari/.*$
[browser_name_pattern] => Mozilla/5.0 (Windows; U; Windows NT 5.1; *) AppleWebKit/* (KHTML, like Gecko) Chrome/1.0.* Safari/*
[parent] => Chrome 1.0
[platform] => WinXP
[browser] => Chrome
[version] => 1.0
[majorver] => 1
[win32] => 1
[frames] => 1
[iframes] => 1
[tables] => 1
[cookies] => 1
[javaapplets] => 1
[javascript] => 1
[cssversion] => 3
[supportscss] => 1
[minorver] => 0
[alpha] =>
[beta] =>
[win16] =>
[win64] =>
[backgroundsounds] =>
[cdf] =>
[vbscript] =>
[activexcontrols] =>
[isbanned] =>
[ismobiledevice] =>
[issyndicationreader] =>
[crawler] =>
[aol] =>
[aolversion] => 0
)

-----ここまで------

ちゃんとChromeの判別ができてる。最近入れたIE8ちゃんと判別してた。

php.iniを利用できない場合は、Net_User_Agent_Detectというモジュールで判別できそう。

使い方はこんな感じ。
-----ここから---
<?php
require_once("Net/UserAgent/Detect.php");
echo Net_UserAgent_Detect::getBrowserString();
echo Net_UserAgent_Detect::getOSString();
?>

---ここまで---
get_browser()とく比較すると情報量が圧倒的に少ないけど、php.iniを編集できる環境じゃない場合は、ブラウザとプラットフォーム取得くらいは使えそう。

2009年3月8日日曜日

phpDocumentorのメモ

PHPのソースからAPIドキュメントを出力するツール「phpDocumentor」を調べたのでメモ。
JavaでのJavaDocにあたるもの。PHPソース内の記述もJavaDocとほぼ同じ。

インストールはpearから。
-----インストール例-------
>pear install --alldeps phpdocumentor
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update
ear.php.net" to update
downloading PhpDocumentor-1.4.2.tgz ...
Starting to download PhpDocumentor-1.4.2.tgz (2,421,028 bytes)
....................................................................done: 2,421
028 bytes
downloading XML_Beautifier-1.2.0.tgz ...
Starting to download XML_Beautifier-1.2.0.tgz (12,948 bytes)
...done: 12,948 bytes
downloading XML_Parser-1.3.2.tgz ...
Starting to download XML_Parser-1.3.2.tgz (16,260 bytes)
...done: 16,260 bytes
downloading XML_Util-1.2.1.tgz ...
Starting to download XML_Util-1.2.1.tgz (17,729 bytes)
...done: 17,729 bytes
install ok: channel://pear.php.net/PhpDocumentor-1.4.2
install ok: channel://pear.php.net/XML_Parser-1.3.2
install ok: channel://pear.php.net/XML_Util-1.2.1
install ok: channel://pear.php.net/XML_Beautifier-1.2.0

-----インストール例ここまで-------

実行はコマンドラインから。

(実行)
>phpdoc -t ドキュメント出力ディレクトリ -d ソースディレクトリ -o HTML:frames:earthli

※ 出力はHTML::frames:earthliがお気に入り

テーマ(?)のテンプレートが日本語対応になっておらず、出力したファイルが文字化けするので、以下のテンプレートを修正する。

ディレクトリ([php install directory]/data/PhpDocumentor/phpDocumentor/Converters/HTML/タイプ/templates/テーマ/templates)以下にあるheader.tplファイルのISO-8859-1と書かれている所を文字コードにあわせて修正

PDF/CHMもためしたが、PDFは文字化け、CHMはファイルの生成がされなかった。

[タイプ/テーマ]
frames(フレームあり)
 default
 DOM
 earthli
 l0l33t
 phpdoc.de
 phpedit
 phphtmllib

Smarty(フレームなし)
 HandS
 PHP
 default

(参考URL)
http://caspar.hazymoon.jp/php/phpDocumentor/

ieHTTPHeaders

HTTPヘッダー情報を知りたいときにはいつもFirefoxのLive HTTP Headersというプラグインを使っているのですが、IEでHTTPヘッダーを表示するプラグインとして「ieHTTPHeaders」があるのを知ったのでとりあえずメモ。