2008/2/6 水曜日

fputcsv の覚書

Filed under: 技術メモ — dev0000 @ 1:42:40 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

PHPでデータをブラウザにCSV形式で出力する

でもちらと書いたのだけど、CSVデータのダウンロード別パターン。

PHP:
  1. <?php
  2.   $out = '';
  3.   $list = getHogeHogeList(); // sample
  4.   if (!empty($list)) {   
  5.      $fp = fopen("php://memory", 'r+');
  6.      foreach ($list as $row) {
  7.        fputcsv($fp, $row);
  8.      }
  9.      rewind($fp);
  10.      $out = mb_convert_encoding(stream_get_contents($fp), 'SJIS', mb_internal_encoding());
  11.   }
  12.   header("Cache-Control:");
  13.   header("Pragma:");
  14.   header('Content-Type: application/octet-stream; charset=shift_jis');
  15.   header('Content-Disposition: attachment; filename=hoge' . date('YmdHis') .'.csv');
  16.   echo $out;

"php://memory" を使うところがまた微妙。

PHPのsscanf とか fscanf

Filed under: 技術メモ — dev0000 @ 1:29:18 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

sscanf

sscanf ― フォーマット文字列に基づき入力を処理する

例。

PHP:
  1. <?php
  2. $str = "000012345678";
  3. $arr = sscanf($str, "%04d%04d%04d");
  4. // Array
  5. //(
  6. //    [0] => 0
  7. //    [1] => 1234
  8. //    [2] => 5678
  9. //)
  10. print_r($arr);

preg_match でもいいといえばいいんだが。
どちらかと言うと、ファイルからの入力をサポートする fscanf のほうが便利そう。

ただ、最近はあまり固定長データは扱わないなぁ。
たまにあるけど。

HTML convert time: 0.584 sec. Powered by WordPress ME