CakePHPの簡単なサンプルです。
PCからの接続するとPCサイト用のHTMLを表示し、携帯から接続すると携帯サイト用のHTMLを表示するサンプルです。

出力するHTMLの文字コードは、utf-8のみとします。

(続きを読む »)

携帯端末の判別

携帯端末の判別方法については、次のページが参考になりました。
MT312 - ユーザーエージェント携帯判別

PEARのNet_UserAgent_Mobileも利用したいと思います。

Net_UserAgent_Mobileの使用方法は、次のページが参考になります。
【PHP TIPS】 14. 携帯サイトを作るためのPEAR::Net_UserAgent_Mobile:ITpro

絵文字

DoCoMo絵文字からau,Softbankの絵文字に変換する場合、次のページが参考になります。

tacolog - Smartyプラグインで絵文字変換プログラムを作る 再び

絵文字変換に関する情報リンク

ウノウラボ Unoh Labs: auは絵文字を自動変換していたわけではなかった

エミュレータ

エミュレータのダウンロードサイトへのリンクです。

DoCoMo

作ろうiモードコンテンツ:ツールダウンロード | サービス・機能 | NTTドコモ

iモードHTMLシミュレータⅡを使用して、hostsファイルで参照しているドメインのサーバーにアクセスする場合、次の設定をします。

  1. メニューの[ブラウザ]->[オプション設定]をクリックして、Optionsダイアログを開く。
  2. [ネットワーク設定]タブを選択して、「HOSTSファイルを参照する」をオンにする。
au

Openwave Developer Network - Home

Softbank

ソフトバンク

PEAR::XML_Serializerを使って、google等で認識できるサイトマップを出力するメモです。

XML_Serializerのインストール

XML_Serializerと依存するパッケージを次のようにインストールしました。

$ bin/pear -c pear.conf install --onlyreqdeps channel://pear.php.net/XML_Serializer-0.18.0

PEARパッケージをアプリケーションごとにインストールのように、「-c pear.conf」で設定ファイルを指定しています。

サンプル

次のようにしてサイトマップのxmlを作成します。

PHP:
  1. $urls = array();
  2.  
  3. $elem = array();
  4. $elem['loc'] = 'http://url/foo';
  5. $elem['lastmod'] = Date('Y-m-d');
  6. $elem['changefreq'] = 'monthly';
  7. $elem['priority'] = '0.5';
  8. $urls[] = $elem;
  9.  
  10. $elem = array();
  11. $elem['loc'] = 'http://url/bar';
  12. $elem['lastmod'] = Date('Y-m-d');
  13. $elem['changefreq'] = 'weekly';
  14. $elem['priority'] = '0.6';
  15. $urls[] = $elem;
  16.  
  17. $options = array (
  18.                   'addDecl' => TRUE,
  19.                   'encoding' => 'UTF-8',
  20.                   'indent' => '  ',
  21.                   'rootName' => 'urlset',
  22.                   "defaultTagName"  => "url",
  23.                   "rootAttributes"  => array("xmlns" => 'http://www.sitemaps.org/schemas/sitemap/0.9'),
  24.                   );
  25.  
  26. $serializer = new XML_Serializer($options);
  27.  
  28. $result = $serializer->serialize($urls);
  29.  
  30. if ($result === true) {
  31.   $xml = $serializer->getSerializedData();
  32. }

サイトマップのメモ
  • 1個のサイトマップファイルに記述できるURLの数は、50000個まで。
  • 1個のサイトマップファイルのサイズ(圧縮前)は、10MB(10,485,760バイト)を超えてはいけない。

これらの制限の範囲に収まらない場合は、サイトマップファイルを複数に分けます。
(gzip形式で圧縮も可能)

sitemaps.org - プロトコルに次の記述があります。

複数のサイトマップを使用する場合は、サイトマップ インデックス ファイルに各サイトマップ ファイルをリストする必要があります。

複数のサイトマップファイルを作成した場合は、サイトマップ インデックス ファイルが必須のような記述に見えますが、とりあえずは気にしにないことに・・・
(googleの「ウェブマスター ツール」や、Yahooの「Yahoo! Site Explorer
-」では、複数のサイトマップを登録できるようになっています。)

リンク

サイトマップのフォーマット
sitemaps.org - プロトコル

PEARのマニュアルサイトのサンプル
PEAR :: Manual :: Example

XML_Serializerのチュートリアル
Instant XML with PHP and PEAR::XML_Serializer [PHP & MySQL Tutorials]

2007年9月5日

Zend FrameworkとPEAR::Pagerのメモ
で、さらにクエリ情報をURLに付加する場合のメモです。

次のようにextraVarsオプションを追加してPagerを作成しましたが、うまくいきませんでした・・・

PHP:
  1. $params['append'] = false;
  2. $params['fileName'] = '?' . $urlvar . '=%d';
  3. $params['extraVars'] = array('var'=>'foo');

appendをfalseにすると、extraVarsオプションが効かなくなるようです。

そこで、次のようにfileNameオプションにクエリ情報を付加して、解決しました。

PHP:
  1. $params['fileName'] = '?' . $urlvar . '=%d' . '&var=foo';

PHPのコード断片でどのくらい時間がかかっているか知るため、PEARのBenchmarkパッケージをインストールしました。

インストール

$ pear -c pear.conf install Benchmark

アプリケーションごとにPEARライブラリをインストールしているため、「-c pear.conf」として、PEARパッケージをインストールする場所等を記述した設定ファイルを指定しています(PEARパッケージをアプリケーションごとにインストール)。

使用準備

Strict Standardsメッセージを表示しないように、ソースコードに次を追加しました(PHP5の場合)。

error_reporting(E_ALL | ~E_STRICT);

サンプル

サンプルは、PEARマニュアルページにありました。
計測を開始してから停止するまでの時間だけでなく、経過途中の時間を計測できる方法があって、便利です。
PEAR :: Manual :: Benchmark_Timer
Docs For Class Benchmark_Timer