phpとJSONとCSVと・・・


phpからjson形式の操作をするのに、
json_encode、json_decodeって便利な関数があるんだけれども。。。

json_encode:配列とかからjson形式にしてくれる
json_decode:json形式からオブジェクトにしてれる

みたいな。

これがphp5.2.Xからデフォルトで使えますよと。

テストサーバのphpが5.1.4とかなんとも残念な・・・Orz

てことで、upgrade.php使ってムリヤリテスト。

upgrade.phpをまずは↓ここからDL。
http://include-once.org/p/upgradephp/
これでphp4とか5.1系でも5.2系以上でしか使えない関数が使える。
php4で5.X以上の関数が使える。
なんて便利ヽ(´ー`)ノ

//最初にupgrade.phpを読み込んで
	require_once("upgrade.php");
        //なんかデータの入ってるCSVを読み込んで
	$csv = mb_convert_encoding(file_get_contents("../csv/data.csv"), "utf-8", "sjis-win");
        //一時ファイルに入れてごにょごにょ
	$fp = tmpfile();
	fwrite($fp,$csv);
	rewind($fp);
	setlocale(LC_ALL,'ja_JP.UTF-8');
	$cnt = 0;
	while (($row = fgetcsv($fp, 4096, "t")) !== false) {
		if($cnt != 0){
                       //ここでJSONに出力する形式を設定
			$data[] = array( 'id'=>$row[0] ,'object'=>$row[1] );
		}
		$cnt++;
	}
	fclose($fp);
        //配列をjsonにエンコード
	$encode = json_encode($data);
        //headerでjson指定しないといけないぽい
	header("Content-Type:application/json");	
        //出力
	echo $encode;

これでJSONのデータは↓みたいな形で出力される。

[{id:"01",object:"オブジェクト"},
{id:"02",object:"オブジェクト2"}]

CSVはExcelで作られてたら大抵sjisだから最初の読み込みでUTF-8とかに変換。
今回はたまたまUTF-8のサイトだったから。

まぁ、大抵UTF-8で作るけど。

JSONはJSでAjaxするときの扱いが楽だから大好き。
このphpで出力されたjsonをjsで使う時は、
例えばjQueryだったら、

$.getJSON('data.json')
で呼び出す所で拡張子を変えるだけ。
$.getJSON('data.php')
↑こんな感じで。

ってだいぶはしょってるけど。

jQueryの話はまた今度。

Posted in Web-tips by prolography at 12月 8th, 2010 .
Tags: , , ,
海外現地オプショナルツアーなら【VELTRA(ベルトラ)】
ケンコーコム