protected function detectDialect($data) { // if dialect isn't specified in the constructor, the reader will attempt to figure out the format $autodetect = new Csv_AutoDetect(); $dialect = $autodetect->detect($data); // @todo Header detection isn't quite right (need to remove the first row from iteration) /*if ($autodetect->hasHeader($data)) { $this->rewind(); pre($this->loadRow()); $this->setHeader($this->loadRow()); }*/ return $dialect; }
public function test_Detect_Can_Detect_Header() { $data = file(realpath('data/tab-200.csv')); $sample1 = implode("", array_slice($data, 0, 20)); $sample2 = implode("", array_slice($data, 1, 21)); $sample3 = implode("\n", file(realpath("data/excel-formatted.csv"))); $sample4 = implode("", file(realpath("data/pipe-100.csv"))); $detecter = new Csv_AutoDetect(); $this->assertTrue($detecter->hasHeader($sample1)); $this->assertFalse($detecter->hasHeader($sample2)); $this->assertFalse($detecter->hasHeader($sample3)); $this->assertTrue($detecter->hasHeader($sample4)); }
protected function detectDialect($data) { // if dialect isn't specified in the constructor, the reader will attempt to figure out the format $autodetect = new Csv_AutoDetect(); return $autodetect->detect($data); }
/** * @param $file * @return \Csv_Dialect */ public static function determineCsvDialect($file) { // minimum 10 lines, to be sure take more $sample = ""; for ($i = 0; $i < 10; $i++) { $sample .= implode("", array_slice(file($file), 0, 11)); // grab 20 lines } try { $sniffer = new \Csv_AutoDetect(); $dialect = $sniffer->detect($sample); } catch (\Exception $e) { // use default settings $dialect = new \Csv_Dialect(); } // validity check if (!in_array($dialect->delimiter, array(";", ",", "\t", "|", ":"))) { $dialect->delimiter = ";"; } return $dialect; }
/** * determines CSV Dialect * * @static * @param $file * @return Csv_Dialect */ public static function determineCsvDialect($file) { // minimum 10 lines, to be sure take more $sample = ""; for ($i = 0; $i < 10; $i++) { $sample .= implode("", array_slice(file($file), 0, 11)); // grab 20 lines } try { $sniffer = new Csv_AutoDetect(); $dialect = $sniffer->detect($sample); } catch (Exception $e) { // use default settings $dialect = new Csv_Dialect(); } return $dialect; }