びくんびくんしながらコードを書く。

いしきひくい系エンジニアのらくがき帳

PHPのcsvライブラリGoodby/CSVで行頭(1行目)をすっ飛ばす(除外)設定。

csv取込機能を実装する必要があって掲題のライブラリが使いやすいと出てきたので使ってみた。

DBのcolumn名とヘッダー名が異なるため、csvファイルの1行目を読まない(skip)する必要があったのだけど githubのreadmeを見ても言及されていなかったので自分で調べてみた。
調べたついでに記事に残しておこうと思います。

vendor\goodby\csv\src\Goodby\CSV\Import\Standard\LexerConfig.php
上記がconfigの本体っぽいので中を見た結果あっさり見つかってしまいました。
実際に見てみましょう。

<?php

/* *** 必要なところだけ記載 *** */

$config = new LexerConfig();
$config->setDelimiter(",")  //区切り文字は何かの指定
       ->setToCharset('UTF-8') //読み込んだ後の出力で文字コードをどうするかの指定
       ->setFromCharset('SJIS-win') //読み込んだcsvファイルの文字コードを指定
       ->setIgnoreHeaderLine(true); //【ここが本命】ヘッダーをどうするか?
                                    //true→ヘッダーを読み込まない(skip)する 
                                    //false → ヘッダーを読み込む
/* *** この後も処理は続くよ *** */

はい。
configでsetIgnoreHeaderLineをtrueで指定してやるだけでした。
ただ色々ぐぐってみたけど出てこなかったので誰かの助けになればと思って記事にしてみました。

config の中を見てみたら他にも色々設定できそうですのでまた調べてみたいと思います。

githubリポジトリはこちら

github.com