ユーザ用ツール

サイト用ツール

Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/7/73b554ec93b0177942dd135097f3a780.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/7/73b554ec93b0177942dd135097f3a780.metadata failed

csvファイルデータ取得のベスト処理方法
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/7/73b554ec93b0177942dd135097f3a780.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/2/2f7f685b47f8d9d3733e74f380bc02e0.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/2/2f7f685b47f8d9d3733e74f380bc02e0.metadata failed
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/7/73b554ec93b0177942dd135097f3a780.xhtml failed

CSVファイルデータ取得のベスト処理方法

CSVファイルのデータを取得するの一番の方法

以前[CSVファイルのデータを取得するの一番の方法]でソースを書いたけど、

やっぱり関数を使って一番簡単な方法ですが、

日本語など入っているCSVファイルなどについてはやっぱり「fgetcsv_reg」ファンクションを使ったほうがいい。

// ファイルパス指定
$csvPath = "***.csv";
// ファイルをオープン
$file = fopen($csvPath,'r');
// ロックかけ
flock($file,LOCK_EX);
// メソットを利用し、ファイルデータ取得(1行だけ)
$data = fgetcsv_reg($file);
print_r($data);
// メソットを利用し、ファイルデータ取得(1行ずつ)
while ($data = fgetcsv_reg($file)) {
	if(count($data)!=3){
		$error = "データ正しくありません";
		exit($error);
	}
	//日本語文字コードをUTF8に変換
	$data[1] = mb_convert_encoding($data[1], 'UTF8','auto');
	$csvList[] = $data;
}
// ロック解除
flock($file,LOCK_UN);
// ファイルを閉じる
fclose($file);
print_r($csvList);

「fgetcsv_reg」メソット

/**
* ファイルポインタから行を取得し、CSVフィールドを処理する
* @param resource handle
* @param int length
* @param string delimiter
* @param string enclosure
* @return ファイルの終端に達した場合を含み、エラー時にFALSEを返します。
*/
function fgetcsv_reg (&$handle, $length = null, $d = ',', $e = '"') {
	$d = preg_quote($d);
	$e = preg_quote($e);
	//$eof = false;
	$_line = "";
	while (($eof != true)and(!feof($handle))) {
		$_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
		$itemcnt = preg_match_all('/'.$e.'/', $_line, $dummy);
		if ($itemcnt % 2 == 0) $eof = true;
	}
	$_csv_line = preg_replace('/(?:\\r\\n|[\\r\\n])?$/', $d, trim($_line));
	$_csv_pattern = '/('.$e.'[^'.$e.']*(?:'.$e.$e.'[^'.$e.']*)*'.$e.'|[^'.$d.']*)'.$d.'/';
	preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
	$_csv_data = $_csv_matches[1];
	$csvDataCount = count($_csv_data);
	for($_csv_i=0; $_csv_i<$csvDataCount; $_csv_i++){
		$_csv_data[$_csv_i]=preg_replace('/^'.$e.'(.*)'.$e.'$/s','$1',$_csv_data[$_csv_i]);
		$_csv_data[$_csv_i]=str_replace($e.$e, $e, $_csv_data[$_csv_i]);
	}
	return empty($_line) ? false : $_csv_data;
}
csvファイルデータ取得のベスト処理方法.txt · 最終更新: 2013/12/06 12:51 by luis_lee