はじめに
今年もやってまいりました、qiitaさんのアドベントカレンダー。
といっても初参加ですが…
今回はphpでテキストファイルを一行ずつ読み込みたい時の簡単な関数を紹介しますよう。
きっかけ
この前、ちょっとしたサーバー上の制約からbatファイルでデータを保存しなければならないことがありました。
その時の副産物でございます。
関数
function file_get_contents_line($file_name){
if(!(isset($file_name))){
return array('error.');
}else{
$file_name_in = file_get_contents($file_name);
$file_name_in = str_replace(array("\r\n", "\r", "\n"), "\n", $file_name_in);
return explode("\n", $file_name_in);
}
}
使い方
file_get_contents_line("file_no_namae_wo_nyuuryoku_suru.txt");
返り値として、一行ごとに分かれた配列が返ってきます。
アイウエオ
牡蠣くえこ
array(3) {
[0]=>
string(15) "アイウエオ"
[1]=>
string(0) ""
[2]=>
string(15) "牡蠣くえこ"
}
用途
応用すれば、データベースとしてファイルを使用できるかもしれませんね
ただ、sqlのデータベースに比べると同時接続に弱いと言う難点があるので、fileロックをしてから書き込んだ方が良いかもしれません。
追記
コメントにて、 @takaram 様にご指摘いただきました。
今回わざわざ関数を作ってしまいましたが、元々phpにはそれができる関数があるとのことでした。
それがfile($file_name, FILE_IGNORE_NEW_LINES);
です。
これをすることで、返り値が改行で区切られて出力されます。