RSSで良く使われている日付形式(W3C-DTF)をPHPで変換の仕方

以下のサイトを参考にすればちょちょいのちょい。
W3C-DTFを解析する

僕はめんどくさいので、

※_parse_w3cdtfが参考サイトの関数名

$parse_date = $this->_parse_w3cdtf($rss_array['dc:date']);
$res_date   = date("Y/m/d",$parse_date['timestamp']);


と、タイムスタンプから生成し直してます。

ということで、トップページのブックマークの読み込みをはてなブックマークへ変更しました。

PHPのini_setじゃ変更できないmbstring.encoding_translation

mbstring.encoding_translationはini_setじゃ変更できないのですね。
もうはまりまくりました。
htaccessも触れなく、共用のレンタルサーバーの時もうサーバの設定に合わせてプログラム&ページ制作していくしかないのですね。

不便だなあ。

PHPのスクリプトをincludeする時にユーザーエージェントは変わる

htmlファイルに読み込ませたphpの中で、携帯かPCかの判別してhtmlを出力していたんだけど、User Agentを使って判別しているライブラリだった為、正しくUser Agentを取得できなかった模様。

まあ、ワンクッションあるから形態のUser Agentは拾えないのですな。
勉強になりました。

今回はもうどちら用のhtmlを表示するかわかっているので引数で対応したけど、わかって無いところでやるとなると面倒だなあと思いました。
が、よく考えてみればincludeするぐらいだから、既にわかってるはずですよね。

うむむ。
ま、ちょっと横着だったってことですな。

僕はヤフーには入れそうにありません

こんな記事を見て早速トライしてみました。
Yahoo!がPHPエンジニアを雇う時に聞く質問
Yahoo!がPHPエンジニアを雇う時に聞く質問」に解答付けてみた

自慢じゃありませんが、半分以上即答できなかったですね。
マニュアル見ればわかるんでしょうが。
というか、マニュアル見てわかれば良いって教育受けてきたから、覚えなくなっちゃったんでしょうか。

でも、これを何も見ずに答えろってことなら、それだけスピードが求められるってことなんでしょうね。
というか常識?

そんなの無理だなー。

Mail_mimeDecodeとNet_POP3でメールで更新

仕事で「携帯メールで更新」という要望があったので、このブログをメールで更新ができるようにチャレンジしてみました。
結構難しいかなと思ったんですが、PEARのMail_mimeDecodeNet_POP3を利用すれば案外簡単に出来そうだということがいくつかのサイトでわかったのでやってみました。

参考サイト
PEAR::Net_POP3を使ってPOP3サーバにアクセスしよう
stdinからのメール処理でメール情報を取得する
PEAR で簡易メール受信
PEAR::Net_POP3

上記のサイトを参考にして出来たメール内容を解析するソースがこちら。
一応添付画像もアップロードしてくれるようになっているのですが、僕の携帯が古いので大きなファイルをメールで送信できないんで、あんまり使ってません。

// インスタンス作成
$pop3 = new Net_POP3();

// 接続
$res = $pop3->connect ("domain.name", 110);

// ログイン ( APOP )
$res = $pop3->login( "mail_acount", "password", true);

// 更新件数取得
$numMsg = $pop3->numMsg();

for ($i=1; $i<=$numMsg; $i++) {

    //メールをパースする
    $decoder = new Mail_mimeDecode($pop3->getMsg($i));
    $params['include_bodies'] = true; //ボディを解析する
    $params['decode_bodies'] = true; //ボディをコード変換する
    $params['decode_headers'] = true; //ヘッダをコード変換する
    $structure = $decoder->decode($params);

    //送信者のメールアドレスを抽出
    $mailaddress = $structure->headers['from'];
    $mailaddress = addslashes($mailaddress);
    $mailaddress = str_replace('"','',$mailaddress);

    //署名付きの場合の処理を追加
    preg_match("/<.*>/", $mailaddress, $str);
    if ($str[0]!="") {
        $str = substr($str[0], 1, strlen($str[0])-2);
        $mailaddress = $str;
    }

    // 日付を取得
    $date = date("Y-m-d", strtotime($structure->headers['date']));

    // 件名を取得
    $subject = $structure->headers['subject'];

    switch(strtolower($structure->ctype_primary)){

        // シングルパート(テキストのみ)
        case "text":
            $body = $structure->body;
            break;

        // マルチパート(画像付き)
        case "multipart":
            foreach($structure->parts as $part){
                switch(strtolower($part->ctype_primary)){

                    // テキスト
                    case "text":
                        $body = $part->body;
                        break;

                    // 画像
                    case "image":
                        //画像の拡張子を取得する(小文字に変換
                        $type = strtolower($part->ctype_secondary);

                        //JPEGチェック(GIFやPNG形式の画像チェックなども可
                        if($type != "jpeg" and $type != "jpg"){
                            continue;
                        }

                        //添付内容をファイルに保存
                        $fp = fopen("image/tmp/".uniqid("tmp_diary_").".".$type, "w");
                        $length = strlen($part->body);
                        fwrite($fp, $part->body, $length);
                        fclose($fp);
                        break;
                }
            }
            break;
        default:
            $body = ""; 
            $i++;
    }

    // データを取得したら削除
    $pop3->deleteMsg($i);
}

// 接続解除
$pop3->disconnect();</pre>

いやあ、ライブラリにおんぶに抱っこのソースですな。

今日は久しぶりに早く帰れたので、さっさと寝たいと思います。
≪ 前のページ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 次のページ ≫ 8 of 9

アーカイブ

2010

2009

2008

2007

コンタクト

longkey1[at]gmail[dot]com