ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

DocomoがLinuxベースのケータイとか、ビルゲイツ08年引退とかケータイRSSリーダーとか

2006-06-16 20:34:24 | Weblog

いっぱい、小ネタ的ニュースがあるので、ぜーんぜん関係ないけど、一気にまとめて!




ここのニュース
NTTドコモなど6社、リナックスベースの携帯電話OSを共同開発へ
http://news.goo.ne.jp/news/reuters/keizai/20060615/JAPAN-217463.html


Linuxの上に、Java VMがのって、iアプリが動くってことになるのかにゃー。




さ、次のニュースはこれ!

MSビル・ゲイツ氏、08年7月に経営の一線引退
http://news.goo.ne.jp/news/asahi/keizai/20060616/K2006061600830.html?fr=rk


ふーん、そーなの。。




さ、つぎ。

この前、RSSのケータイの話を書いたけど、アプリで実現しないのなら
つまりWeb版でみせるのでOKなら、このgooでも、ケータイRSSリーダー
をだしていますが
ここ http://reader.goo.ne.jp/web/html/rss_mobile.html

Livedoorも、そーいう形で、ケータイ版をだしてきた。
ここ 
livedoor Readerモバイル
http://reader.livedoor.com/guide/mobile.html


おー、ケータイからRSSの時代だよね。




以上、ぜんぜんまとまりの無いお話でした。

(ついでに、自分へのメモ番組表RSS配信サービス


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

XMLをPHPで読み込み、処理する(RSSを例に) その2:ソースの説明

2006-06-16 14:53:53 | JavaとWeb

 前回のブログで、PHPでRSS(=XMLで記述されている)を読み込み、item内のlinkとtitleを表示するソースを書きました(なお、エンコードをUnicode(UTF-8)にしないと、おかしな文字になります)

 で、今回は、その説明です。




■PHPでXMLを扱う方法
 
XML First Stepというサイト
ここ http://www.geocities.jp/xmlfirststep/index.html
のPHPというところをみると、

・XMLのパーサと、
・PHP版のDomと
・PHPでMSXMLを使う方法

が書かれて(リンクされて)います。
 下の2つは、結局DOmで、今までExcelマクロでやってきたのと、あんまり変わりないので、今回は一番上のXMLパーサを使うことにします。

 なお、自分のPHPでこのXMLパーサが使えるかどうかの確認は、上記のサイトの
 ここ http://www.geocities.jp/xmlfirststep/pxml/pxml1.html
 に書いてありました。




■XMLパーサのプログラムの流れ

プログラムの流れは、以下のとおりです

1.xml_parser_createを行う。これで、パーサのハンドラを受け取る
2.xml_set_element_handlerで、開始タグ、終了タグがきたときに呼び出される関数を指定する
3.xml_set_character_data_handlerで、タグのあいだの値の部分が読み終わったときに呼び出される関数を指定する
4.XMLファイルをfopenでふつうのファイルのように読み込む
5.ループして、ファイルエンド(feofで取得できる)まで、xml_parseを実行する
 →この間、2,3で指定した関数が呼び出される
6.xml_parser_freeで解放する。

なお、2、3を指定するため、
開始タグがきたときの関数、
終了タグがきたときの関数
値が読み終わったときの関数
を作成しておきます。




■XMLパーサの動作のながれ

XMLファイルを読み込み、xml_parseにはいると、その内部で、

<たぐ1 属性1=属性値 属性2=属性値>値1</たぐ1>
<たぐ2 属性1=属性値 属性2=属性値>値2</たぐ2>

とあったとき

<たぐ1 属性1=属性値 属性2=属性値>をよみこんで処理した段階で、
  xml_set_element_handlerで設定した、開始タグがきたときの関数が呼び出されます。

その後、値1をよみこんで処理した段階で、
  xml_set_character_data_handlerで設定した、値が読み終わったときの関数が呼び出されます。

その後、</たぐ1>をよみこんで処理した段階で、
  xml_set_element_handlerで設定した、終了タグがきたときの関数が呼び出されます。

その後<たぐ2 属性1=属性値 属性2=属性値>をよみこんで処理した段階で、
  xml_set_element_handlerで設定した、開始タグがきたときの関数が呼び出されます。

その後、値2をよみこんで処理した段階で、
  xml_set_character_data_handlerで設定した、値が読み終わったときの関数が呼び出されます。

その後、</たぐ2>をよみこんで処理した段階で、
  xml_set_element_handlerで設定した、終了タグがきたときの関数が呼び出されます。

なお、たぐ1、たぐ2で呼び出される
開始タグがきたときの関数、
終了タグがきたときの関数
値が読み終わったときの関数
は、同じ関数です。




■今回の場合
開始タグがきたときの関数が、startElement
終了タグがきたときの関数が、endElement
値が読み終わったときの関数が、characters
に相当します。

 startElementの引数$nameにタグ名が入ってくるので($attribには、属性が連想配列で入ってきます)そのタグ名によって$noを入れます。
 itemタグ内に入っていれば、0以上の値になるようにしてあります。
 そして、item内で、linkやtitleがきたら、$noを0以上の数にして、適当な文字をprintしています。

 そうすると、charactersの$textに値が入ってくるので、$noが0より大きい(item内で、linkかtitle)のとき、その値を出力するようにしています。

 あとは、readXML($file)で実行しているのですが、これは、上記「XMLパーサのプログラムの流れ」のとおりです。




こんなかんじでーす

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

XMLをPHPで読み込み、処理する(RSSを例に) その1:まずはソースだけ

2006-06-16 12:52:13 | JavaとWeb

PHPでXMLを読む話について。
読み込めることを確認したんだけど、今時間がないので、ソースをはるだけに
しておきます。解説は、このつぎ。

なお、以下のサイトを参考にして作成しました。
XMLパーサ(PHP版)入門


2.簡単な使用例
http://www.geocities.jp/xmlfirststep/pxml/pxml2.html





■仕様
どこかのRSSを読み込んで、test.xmlというファイル名で、
PHPのソースのあるところに保存して、
itemタグ内にある、linkとtitleタグの内容を出力します




■ソース
以下のようなかんじです。
<?php
//*=============================================================*//
//*							*//
//*	XMLプログラム					*//
//*							*//
// http://www.geocities.jp/xmlfirststep/pxml/pxml_menu.html	*//
//	を参考にしました					*//
//*=============================================================*//

//	保存領域
$no = -1;

//======================================//
//	テキスト部分の処理		   //
//======================================//
function characters($parser, $text)
{
	global $no;

	if ( $no > 0 )
	{
                print "${text}<BR>¥n";
	}

}

//======================================//
//	要素の開始		   //
//======================================//
function startElement($parser, $name, $attrib)
{
	global $no;

	//	出力する場合、noを1以上に
	if($name == 'link')
	{
		if ( $no >= 0 )
		{
			print "link:";
			$no	=	1;
		}
	}
	elseif ($name == 'title')
	{
		if ( $no >= 0 )
		{
			print "title:";
			$no	=	2;
		}
	}
	elseif ($name == 'item')
	{
		$no	=	0;
	}
	else
	{
		$no	=	-1;
	}
}
//======================================//
//	要素の終了		   //
//======================================//
function endElement($parser, $name)
{
	//	今回は、なにもすることはない
}


//======================================//
//	実際の処理		   //
//======================================//
function readXML($file)
{
	//XMLパーサー作成("UTF-8")
    	$xml_parser = xml_parser_create("UTF-8");

    	// 大文字変換を行わない
    	xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
    
    	//start および end 要素のハンドラを設定する
	xml_set_element_handler($xml_parser, "startElement", "endElement");

    	//文字データハンドラを設定する
	xml_set_character_data_handler($xml_parser, "characters");


    	if (!($fp = fopen($file, "r")))
	{
        	die("XMLファイルを開けません。");
    	}

	while ($data = fread($fp, 4096))
	{
           //XMLパース処理
           if (!xml_parse($xml_parser, $data, feof($fp))) 
	   {

            //パースエラー処理
             die(printf("XML error: %s at line %d",
                xml_error_string(xml_get_error_code($xml_parser)),
                xml_get_current_line_number($xml_parser)));
	   }
        }

	//XMLパーサの開放
	xml_parser_free($xml_parser);
}


//処理実行
readXML("test.xml");    
?>

(上記の < > ¥ は、本当は半角です)




では、説明は、またの機会に。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

YAHOOオークションの自動キーワード検索を、RSSリーダーで行うためのRSSを教えてあげる!

2006-06-16 00:57:44 | Weblog

ここのニュース
テレビ局がYouTubeより手を焼いているのは……
http://www.itmedia.co.jp/news/articles/0606/12/news045.html


によると、YAHOOオークションで、テレビ番組がDVDに焼かれて、販売されてしまうらしい。。

ほー、放送局の人なら、もうシステム作ってるかもしれないけど、念のため、
YAHOOのオークションのキーワード検索のRSSを教えてあげよう。

これから書くRSSを、ここ

YOU TUBEに追加された動画を、RSSから取得するためのExcelシート(マクロ)の作り方
http://blog.goo.ne.jp/xmldtp/e/d9fa463b8473e7f053bf938dd6e8e0c3

に書いてあるExcelシートをつくって、そこの読み込み先URLに入れれば、指定した一定時間ごとに、そのサイトを検索し、新しく出たのがあれば、追加してくれるってことだ。

 また、RSSリーダーに設定して、自動的に更新しても、もちろん良い。

 ということで、上記マクロでもRSSリーダーでも、なんでも?、自動検索してくれるので、それで確認して、まずかったら、削除依頼をだすと。。
 放送局は、そこまで自動化したシステムが作れるよね。
 (そのぐらいのシステムは作ってあると思うけど。。)




じゃ、肝心のYAHOOオークションのキーワード検索のRSS

http://search.auctions.yahoo.co.jp/search_rss?p=キーワードをSJIS16進で&auccat=0&alocale=0jp&acc=jp

pの値のところは、キーワードをSJISの16進で入れてください。

たとえば、はいだしょうこをSJISで16進表記すると
82 cd 82 a2 82 be 82 b5 82 e5 82 a4 82 b1
なので、
URLは、
http://search.auctions.yahoo.co.jp/search_rss?p=%82%CD%82%A2%82%BE%82%B5%82%E5%82%A4%82%B1&auccat=0&alocale=0jp&acc=jp
となる。




注意点は、
YOU TUBEの場合のキーワードはUTF-8表記だったけど、
YAHOOオークションのキーワードはSJIS表記で、
それを16進にして1文字分(2バイト)ごとに%をつけてね!


なお、このURLも、上記リンク先のプログラムも自己責任の上使ってください。
ウィリアムのいたずらが急いでテキトーにしらべたことなので、多分
バグはあると思いますが、それで損失をこうむっても、ウィリアムのいたずらは、
一切、まったく、これっぽっちも責任とりませんので、そのつもりで。

そのかわり、Excelのプログラムはもちろん、好き勝手に改造してくださいませ。

じゃ、放送局のみなさーん。売買するみなさーん!
がんばって自動化してくださいねー!!
ウィリアムのいたずらは、オークションやんないので関係ないので。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする