|
送られたファイル名は、変数 $_FILES[名前]['tmp_name'] に格納される。名前は、input type="file"に付けた名前である。 また、変数 $_FILES[名前]['tmp_name'] に、送られたファイルのサイズが格納されるので、この値が 0 だったら、ファイル指定が間違っていたとしてエラーを表示する。
0046: if ($_FILES['file']['size'] == 0) { |
CSVファイルの読み込み |
|
|
ファイルの操作は Google news の時と同様、関数 fopen でオープンし、while ループを繰り返す。 すでに POST されたファイルをオープンするので fopen エラーは発生しないはずだが、念のためエラーチェックを行っている。ファイルから1行を読み込む際、関数 fopen の代わりに、関数 fopen を用いる。関数 fopen は、 fgetcsv (fopen で戻るファイル番号, 最大読み込みバイト数, 区切り文字)
のように使う。戻り値は、区切り文字で区切られた部分文字列からなる配列である。ループ終了条件は、関数 fgets が失敗(ファイル・エンド)するまでである。
0051: if (($infp = fopen($source_file, "r")) == FALSE) { |
|
表形式への変換 |
|
|
あとは簡単である。関数 fgets で得られた配列(表の1行に相当)を foreach で読み込み、<td> タグで囲みながら表示する。 この際、関数 mb-convert-encoding により、入力ファイルが Shift JIS, EUC-JP, UTF-8 のいずれであっても、自動的に出力エンコード(UTF-8)に変換し、文字化けが起きないようにしている。 foreach が終わったら、<tr> タグで囲む。 なお、このプログラムは、すべての行に同じ数の区切り文字が存在している――列が結合していることはない――ことを前提としている。 ただし、「デリミタの間にデータが存在しない場合、HTML で空欄をいれたい」という要望があったので、取り出した文字が空である場合、空白文字( )を出力するようにした。 このプログラムはインターネット上の CSV 形式ファイルに対しても、まったく同じ手順で表形式に変換することができる。Mozilla 系ブラウザであれば、冒頭のテキストボックスに CSV ファイルの URL を入れるだけで変換してくれる。
0055: echo "<table border=\"1\">\n"; |
|
参考書籍 |
|
|
|
|
|
|
|
|
2008年07月05日更新
写真と記事 (C)2008 studio pahoo
(※)本ページはリンクフリーですが、複製・転載時にはご一報ください。 |