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

CakePHP3でのコレクションに関して

プログラミングにおいて基礎となるのは配列、ハッシュの処理とオブジェクト指向の使いこなしです。 配列、ハッシュの処理に関しては自前でメソッドを書いてもよいですが、バグの温床になりやすいので、ライブラリを …

no image

CakePHP3 Unitテスト モデル編

長らくやろうやろうと思っていながら手がつかなかったCakePHP3のユニットテストについて。 以前にも何らかのエントリーで書いたのですが(下記参照)、モデル系はなかなかやらなかったので、これを機に説明 …

no image

Angularでのイベント+改行+echoでのバッファサイズ変更

Contents1 Angularのイベント処理2 Angularでの改行ネタ3 echoでのバッファサイズ変換 Angularのイベント処理 Angularを使っていて楽なのはHTMLタグにインベン …

no image

PECLに関して

PHPのライブラリを入れようとするとたまに出てくるPECLに関して。 最近でもメールパーサーを入れた時に出ましたね。 [PHP]pecl,phpize,extensionという単語を見て頭痛がするあな …

no image

携帯サイト取得手法

PHPでスクレイピングの仕事をよくやるんですが、携帯サイトを取得してほしいという要望があり、少し調査をすることに。 携帯サイトといってもドメイン以下のディレクトリで/で区切ってsample.domai …

アーカイブ