昨日はPHPとはなにかから始まり、ずっと基礎を勉強してファイル入出力ができるようになりました。約90分かかりました。
C言語の基礎がわかっていれば、基礎の勉強はあまりおもしろくないかもしれません。
PHPの基礎の勉強を初めて新しく覚えたのは三項演算子とforeach文の書き方、連想配列くらいです。
そこで、今日はファイル入出力を使って外部ファイルに簡易DBを構築できないかということで検討してみました。
まずfopen/fwrite/freadを使って、csvファイルに書き込んだり、読み込んだりしました。
例えばcsvの中身が
1,2,3,_ 1,2,3,_となっていた時(アンダーバーは改行です)
freadを使うとString型で1,2,3,_1,2,3,_という読み込み結果になります。
これをexplode(",",$foo)を使ってカンマごとに配列化することができますが、その後の扱いが大変。
そこでPHPで用意されているcsv用の関数を使います。いくつかの関数が用意されていますが、今回はfgetcsv関数を使います。
以下今回使ったソースです。
<?php $testFile = "test.csv"; $contents[]= ""; if(!$fp = fopen($testFile,"r")){ echo "cannot open "; exit; } $row = sizeof(file("$testFile"));//行数の取得 for($i=1; $i <= $row; $i++){ $contents[$i] = fgetcsv($fp,","); echo $contents[$i][0],",",$contents[$i][1],",",$contents[$i][2],"</br>"; } fclose($fp);
これで、csvファイルの中身を二次元配列に読み込むことができます。
しかしながら、日本語(マルチバイト文字)を文字化けせずに表示させるためには、
ロケールを設定しないといけないようです。
それにしてもブログにソース載せるときに綺麗にできるような何かは無いのか…
ブログ巡回すると大抵の人がつかっているアレを導入したい。
追記:
SyntaxHighlighterというのを使うと綺麗にできました。
0 件のコメント:
コメントを投稿