ユーザ用ツール

サイト用ツール

Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/b/b26e4ed8a41e798b0f089500f9c3eb30.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/b/b26e4ed8a41e798b0f089500f9c3eb30.metadata failed

csvファイルの文字ばけ
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/b/b26e4ed8a41e798b0f089500f9c3eb30.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.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
Writing /var/www/vhosts/w629.ws.domainking.cloud/enjoy-lei.com/lei_wiki/data/cache/b/b26e4ed8a41e798b0f089500f9c3eb30.xhtml failed

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

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

この間CSVファイルを利用してサイトで表示させようとしたら、 もじばけしていて、

下記のコード助かりました。

使え方として

fgetcsvと同じで

function fgetcsv_reg (&$handle, $length = null, $d = ',', $e = '"') {
    $d = preg_quote($d);
    $e = preg_quote($e);
    $_line = "";
    while ($eof != true) {
        $_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];
    for($_csv_i=0;$_csv_i<count($_csv_data);$_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;
}

http://www.phppro.jp/qa/371#2255

上記の記事で

yossyさん有難うございました。

ちなみにCAVファイルでデータを収得するには下記のようにすればOKじゃない?

function searchbox_writing($data) {

	$a = array("category","flow","syllabary");
	for ($i=0;$i<count($a);$i++) {
		$filename = "../data/".$a[$i].".csv";	
		$str = "";
		//CSVファイルOPEN
		$fp = fopen($filename,"r");
		while ($row = fgetcsv_reg($fp,1024)) {
			$row[1] = mb_convert_encoding($row[1],"UTF-8","SJIS");
			if ($a[$i] == $_GET["act"]) {
				if ($row[0] == $_GET["id"]) {
					$str .= "<option value='{$row[0]}' selected>{$row[1]}</option>";
				} else {
					$str .= "<option value='{$row[0]}'>{$row[1]}</option>";
				}
			} else {
				$str .= "<option value='{$row[0]}'>{$row[1]}</option>";
			}
		}
		$data = str_replace("###{$a[$i]}_str###",$str,$data);
		fclose($fp);
	}
	
	$data = str_replace("###word###",$_GET["word"],$data);
	return $data;
}

「fgetcsv_reg 」を利用したソースコード

	protected function getCsvData($csvPath)
	{
		$csvList = array();
		
		// ファイルをオープン
		$file = fopen($csvPath,'r');
		// ロックかけ
		flock($file,LOCK_EX);
		// メソットを利用し、ファイルデータ取得(1行だけ)
		//$data = Util::fgetcsv_reg($file);
		
		// メソットを利用し、ファイルデータ取得(1行ずつ)
		while ($data = Util::fgetcsv_reg($file)) {
			//日本語文字コードをUTF8に変換
			foreach($data as $key => $value ){
				$data[$key] = mb_convert_encoding($value, 'UTF8','SJIS');
			}
			$csvList[] = $data;
		}
		// ロック解除
		flock($file,LOCK_UN);
		// ファイルを閉じる
		fclose($file);
		
		// 一行目データ削除
		array_shift($csvList);
		
		return $csvList;

	}
csvファイルの文字ばけ.txt · 最終更新: 2014/06/03 10:55 by luis_lee