skillup

技術ブログ

PHP

ファイルポインタ関連の操作に関して

投稿日:2018年11月18日 更新日:

CSVの読み込みに関してファイルポインタ関連で色々と整理することがあったのでメモ。

今回やりたかった処理

  1. CSVファイルを読み込み(文字コードがUTF8かはわからない)
  2. 一時ファイルに文字コードを変換したファイルを保存
  3. そこから文字列を読み取る
  4. 一時ファイル削除

結局上記の方法で落ち着きましたが、下記のような方法でも読み込めます。

[PHP] SJISのCSVファイルの文字化けせずに読み込む方法(SplFileObject)

手法の違いとして、直接ファイルを名を指定しているか、ポインタを指定しているかだと思いますが、そこでポインタについて復習。

ファイルポインタとは

思いっきり基礎ですが、ファイルを読み込む時のメモリのアドレス。使う意図としてはより少ないメモリ、より少ない時間で処理を行うため。

処理に関してのメモ。

  • tmpfileはファイル名や中身ではなく、ポインタ(ファイルのどこを読んでいるかを指し示す番地で正確にはメモリのアドレス)。
  • stream_get_meta_dataはポインタを引数にして、ファイルの情報を取得することができる。今回はポインタがわかり、ファイル名がわからないケースなのでこの関数を使う。
  • frwite($fp)で現在のポインタの位置(先頭からのバイト数)に書き込み
  • rewind($fp)強制的にファイルポインタを先頭に戻す

PHPで一時的なファイルポインタを扱う方法

ファイルポインタに関しての簡単なサンプル

https://github.com/umanari145/phptips/blob/master/filepointer/file_pointer.php

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

PHPでのメール送信&カレントディレクトリ

PHPの小ネタ集です。 Contents1 メールでの改行2 PHPでのカレントディレクトリ メールでの改行 メールで改行する場合、いつも\nでOKだったんですが、本日これで送信すると送れないというバ …

no image

PDFテンプレートの活用

PDFのテンプレートの活用について。 PDFを出力するプログラムはいろいろありますが、今回はすでにあるPDFをテンプレート化できるライブラリについて。 Contents1 FPDI2 ソース3 参考リ …

no image

PHPでのログ出力 PHP monolog

PHPでデバッグするときは、画面上にvar_dumpで情報を見ていたのですが、これができない場面ではログへの出力を行うことになります。 いままではフレームワークに標準でついてたんですが、これを機に一般 …

no image

cake sql系+リレーション+ヘルパー

先月末に引き続いてcakeネタをもりっといきます。 といっても自分用の小ネタリンク集です。 Contents1 sql系の小ネタ1.1 findとread1.2 find(‘count&# …

no image

PHPspreadsheet

自分がプログラミングをやりはじめたきっかけはExcelVBAでした。 あれから10年以上の時が流れたのですが、簡易的なデータとしてはやはりExcelを使うことが多いですね。 PythonやJavaSc …

アーカイブ