Guest User

Untitled

a guest
Jan 21st, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. <?php
  2. /**
  3. * CSVファイルを正しく読み込む
  4. * @param resource handle
  5. * @param int length
  6. * @param string delimiter
  7. * @param string enclosure
  8. * @return ファイルの終端に達した場合を含みエラー時にFALSE
  9. */
  10. public function fgetcsv_reg(&$handle, $length = null, $d = ',', $e = '"') {
  11. $d = preg_quote($d);
  12. $e = preg_quote($e);
  13. $_line = "";
  14. $eof = false;
  15. while (($eof != true) and (!feof($handle))) {
  16. $_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
  17. $itemcnt = preg_match_all('/'.$e.'/', $_line, $dummy);
  18. if ($itemcnt % 2 == 0) $eof = true;
  19. }
  20. $_csv_line = preg_replace('/(?:\\r\\n|[\\r\\n])?$/', $d, trim($_line));
  21. $_csv_pattern = '/('.$e.'[^'.$e.']*(?:'.$e.$e.'[^'.$e.']*)*'.$e.'|[^'.$d.']*)'.$d.'/';
  22. preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
  23. $_csv_data = $_csv_matches[1];
  24. for( $_csv_i=0; $_csv_i<count($_csv_data); $_csv_i++) {
  25. $_csv_data[$_csv_i]=preg_replace('/^'.$e.'(.*)'.$e.'$/s','$1',$_csv_data[$_csv_i]);
  26. $_csv_data[$_csv_i]=str_replace($e.$e, $e, $_csv_data[$_csv_i]);
  27. }
  28. return empty($_line) ? false : $_csv_data;
  29. }
Add Comment
Please, Sign In to add comment