なんだか三連続でmicoroformats関連エントリーです。「PHP Classes」でたまたま見つけたmicroformatsのパーサ。
ずっと簡単なmicroformatsのパーサを試してみたかったので、「お!」と思って使ってみたのだが色々と問題が…。
とりあえず以下のように使える。簡単だー。と思っていたらその下の必要なものを見て欲しい。
include ('lib/MicroFormatParser.php'); $html = file('testpage.html'); $html = join("\n", $html); $mfParser = new MicroFormatParser(); $mfParser->parserSetup (array ( 'hcard' => true, 'hreview' => true, 'hcalendar' => true, 'reltag' => true, )); $mf = $mfParser->parseSource($html); echo '<pre>'; $mf->each(' echo "<h1>".get_class($value)."</h1>"; var_export($value); echo "<hr />"; ');
いやーーー。PHP5.xで動かないのかーーー。すんごく残念!
javascriptファイルやcssファイル等をブラウザごとに振り分ける場合、もちろんcss、javascript単体でも出来るのですがサーバーサイドで行う事もできるとかなり便利です。PHPの場合はget_browserという標準関数があってユーザのプラットフォームの情報が取得できるのですが、結構用意が必要なのでちょっと紹介。
この関数USER_AGENTを判別をしてオブジェクトを返してくれるという関数なのですが、オプションを指定すると配列を返す事も可能みたいです。以下の例だとUSER_AGENTを配列に分割して返す形になります。
$platform = get_browser(null, true); echo '<pre>'; print_r($platform); echo '</pre>';
Array ( [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* [parent] => Firefox 0.9 [platform] => WinXP [browser] => Firefox [version] => 0.9 [majorver] => 0 [minorver] => 9 [css] => 2 [frames] => 1 [iframes] => 1 [tables] => 1 [cookies] => 1 [backgroundsounds] => [vbscript] => [javascript] => 1 [javaapplets] => 1 [activexcontrols] => [cdf] => [aol] => [beta] => 1 [win16] => [crawler] => [stripper] => [wap] => [netclr] => ) ?>
こんな感じでjavascriptが可能かどうかや、ブラウザのメジャーバージョンまで返してくれるのでかなり便利なget_browserですが、サーバー側のphp.iniの設定が必要になります。
まず、Browser Capabilities Projectから最新のphp_browscap.iniファイルをダウンロードしてきます。リンク先の上から三番目のファイルです(Use only with PHP!と書いてある奴)。それをサーバーの任意の場所にアップロードしてphp.ini内で場所を指定してあげます。
[browscap] browscap = /path/to/php_browscap.ini
上記設定をしてからサーバー再起動して使えるようになる。この情報を元に振り分けてあげればOKかなっと。
なんだか最近PHPばかり触ってきていたので、公式マニュアルを読むことは少なくなってきましたがたま~~~に読むと新しい発見がありますなぁ。
この関数を使うとIPアドレス方式の「xxx.xxx.xxx.xxx」(xxxは0~255までの数字)という文字列を、int型に変換してくれる。データベースとかにIPのデータを保存する際にchar型とint型だと保存量が全然違うのでこれは便利(自分でやるのもいいけど、公式な関数があると更に便利)。
ファイルを指定してファイルをPHPのソースコードをハイライト表示できる。
error_reporting(0)でエラー(Error)やワーニング(Warning)の表示を無くすと、表示処理が飛ばされる分パフォーマンス的には良いらしい。php.ini等の設定でも同じ事みたいですが、ファイル毎に設定できるのは便利。
emailアドレスチェックはchechdnsrr()checkdnsrr()を使うと良い感じ。Windows版は使えない。PEARのNet_DNSがその代わりになるみたい。