「 PHP 」一覧

pearで携帯の画面サイズ取得

携帯サイトをつくろうと思い立った。

写真画像の表示がメインのコンテンツで、端末の画面サイズに合わせて写真もリサイズして表示したい。各キャリアのサイトにあるスペック一覧のデータをシコシコとテキストファイルに書いて・・・、というやり方では新機種が出るたびに更新作業をしなければいけないので却下。

で、いろいろと調べると、pearに「Net_UserAgent_Mobile」なんてものがある。

さっそくインストール。(2009/03/26時点でBETA版なので「-f」が必要)

サンプルのソースを書いてみる。

OK。縦横とれた。これは便利。

ただ、DoCoMoは端末リスト(XMLファイル)を別途用意しないといけないらしい。インストールされたソースを見ると、たしかに機種情報がベタ書きしてある。これでは最新機種に対応できないな。

しかし、このXMLファイルもコマンド一発でつくれるらしい。CPANのHTTP-MobileAgentに「makexmldocomomap」というのがあって、こいつを動かすとサクッと作れる。

インストール。いろいろ足りないのがあって結構てこずった。

インストール完了。よし、早速やってみよう。

・・・と思ったら、makexmldocomomapが見つからない。

小一時間探してこんなところに見つけた。

で、これを実行すると、

画面にズラズラとXMLが表示される。お、標準出力じゃん。

これでOK。
さっきのサンプルソースに1行追加。

完璧。
あとはcronでこのXMLが定期的に更新されるようにしてやればOK。


UTF-8で作成したPHPで文字化け?

UTF-8で作成したPHPのプログラムを動かしてみたところ、頭に変な文字が出力され正常に動かなかった。

ソースを見なおしても、そんなのを出力しそうな箇所は見当たらない。

もしやと思い、バイナリエディタで開いてみると、ファイルの先頭にこんなデータが。

どうやら「BOM(バイト・オーダー・マーク)」というものらしく、Windowsのメモ帳で作成したUnicodeテキストとかには標準でついてしまうとのこと。

あぁ、そういえばメモ帳でいじった記憶が・・・orz

BOMなしで保存しなおして終了。


Apache+mod_gzipで圧縮されて配信されるページを取得

某サイトのRSSデータを取得しようとしてこのようなソースを書いてみた。

$rssの中を見ると、意味不明の文字?しか入ってない。

ん?何だ?

socket接続(fsockopen)でやったり、curlでやったりしたけど変化なし。

ためしに、レスポンスヘッダを取得してみると、こんなのが。

どうやらApacheにmod_gzipモジュールを組み込んで圧縮して送信しているらしい。

いろいろ試した結果、pearのHTTP_Requestがどうやら使えそう。

プログラムはこんな感じ。


PHPの文字列比較の穴

先日、あるプログラム内で妙な挙動がするのを発見。

『0E2』という文字列と『0E3』と文字列が同じだとなってしまう。

いやいや、そんなわけないだろう。で、いろいろ調べてみたところ、PHPのマニュアルにこんなことが書いてあった。
 

整数値を文字列と比較する際、文字列が 数値に変換されます。
数値形式の文字列を比較する場合、それは整数として比較されます。
これらの ルールは、 switch 文にも適用されます。

なるほど。ということで、文字列を比較するときは、「===」か「strcmp」を使うようにしよう。

※参考
素晴らしき自動的な世界~或いは「型のない」世界~ – がるの健忘録


PHP+cURLでBasic認証がかかったページへアクセスする

たとえば、Basic認証がかかったURL

  • http://secret.hogehoge.com/
  • ユーザ名:username
  • パスワード:password
  • というのがあったとして、このページをPHPで取得するのに

    なんてすると、当然のようにWarningではじかれてしまう。しかし、cURLを利用すると、Basic認証がかかったページでもアクセスすることができる。


    スポンサーリンク
    Googleレクタングル広告 www.labs816.com 336×280
    Googleレクタングル広告 www.labs816.com 336×280