今更感が漂うのですが、Googleリーダーからテイクアウトしたファイル(たぶん、subscriptions.xmlというファイル名)をフィードリーダーでもインポートできるようにしようと思い、まずは中身をチェックするプログラムを書いてみました。
formタグからの一連のタグでファイルをaction先のスクリプトへPOST送信できるようです。
受信したファイルの情報は$_FILESに格納されるので、print_r($_FILES)などのコマンドで確認するとよいと思います。
内容を確認したらパースして表示させて今回はおしまいです。
is_uploaded_file関数はHTTP POSTでアップロードされたファイルであるかどうかを調べる関数です。
というわけで、これで内容の確認はできるようになったのであとはフィードリーダーに実装するだけだったりします。
ちなみにサンプルプログラムはこちらで動作確認できます。
今回、try~catch構文を追加していますがほとんど動作させてませんので無視して頂いてもほとんどかまわない内容になってます。
<?php $value = ""; try { if (!isset($_FILES['test_file']['tmp_name'])) { throw new Exception("not set files."); } if(is_uploaded_file($_FILES['test_file']['tmp_name'])) { if ($_FILES['test_file']['type'] != "text/xml") { $value .= "<p class='red'>ファイル形式がXMLではありません!</p>\n"; } else { if (!($xml = simplexml_load_file($_FILES['test_file']['tmp_name']))) { throw new Exception("xml_parse_error."); } $value .= "<h2>". htmlspecialchars($xml->head->title, ENT_QUOTES) . "</h2>\n"; foreach($xml->body->outline as $rss) { $value .= "<div><ul>"; $value .= "<li>" . htmlspecialchars($rss['text'], ENT_QUOTES) . "</li>\n"; $value .= "<li>" . htmlspecialchars($rss['title'], ENT_QUOTES) . "</li>\n"; $value .= "<li>" . htmlspecialchars($rss['type'], ENT_QUOTES) . "</li>\n"; $value .= "<li>" . htmlspecialchars($rss['xmlUrl'], ENT_QUOTES) . "</li>\n"; $value .= "<li>" . htmlspecialchars($rss['htmlUrl'], ENT_QUOTES) . "</li></ul></div>\n"; } } } else { echo "アップロードされていません<br/>\n"; } } catch(Exception $e) { // $e->getMessage(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <style> ol.linenums li { list-style: decimal outside; } h1 { font-size: 150%; } p.red { color: #ff0000; } </style> <title>GoogleReaderテイクアウトファイルの参照</title> </head> <body> <h1>GoogleReaderテイクアウトファイルの参照</h1> <form action="<?php echo basename(__FILE__); ?>" method="post" enctype="multipart/form-data"> <input type="file" name="test_file" > <input type="submit"> </form> <?php echo $value; ?> </body> </html>
- 投稿タグ
- PHP, XML, ファイルアップロード, フィードリーダー
最近のコメント