Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.87 KB | None | 0 0
  1. if (!function_exists('str_getcsv')) {
  2.     function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = '\\', $eol = '\n') {
  3.         if (is_string($input) && !empty($input)) {
  4.             $output = array();
  5.             $tmp    = preg_split("/".$eol."/",$input);
  6.             if (is_array($tmp) && !empty($tmp)) {
  7.                 while (list($line_num, $line) = each($tmp)) {
  8.                     if (preg_match("/".$escape.$enclosure."/",$line)) {
  9.                         while ($strlen = strlen($line)) {
  10.                             $pos_delimiter       = strpos($line,$delimiter);
  11.                             $pos_enclosure_start = strpos($line,$enclosure);
  12.                             if (
  13.                                 is_int($pos_delimiter) && is_int($pos_enclosure_start)
  14.                                 && ($pos_enclosure_start < $pos_delimiter)
  15.                                 ) {
  16.                                 $enclosed_str = substr($line,1);
  17.                                 $pos_enclosure_end = strpos($enclosed_str,$enclosure);
  18.                                 $enclosed_str = substr($enclosed_str,0,$pos_enclosure_end);
  19.                                 $output[$line_num][] = $enclosed_str;
  20.                                 $offset = $pos_enclosure_end+3;
  21.                             } else {
  22.                                 if (empty($pos_delimiter) && empty($pos_enclosure_start)) {
  23.                                     $output[$line_num][] = substr($line,0);
  24.                                     $offset = strlen($line);
  25.                                 } else {
  26.                                     $output[$line_num][] = substr($line,0,$pos_delimiter);
  27.                                     $offset = (
  28.                                                 !empty($pos_enclosure_start)
  29.                                                 && ($pos_enclosure_start < $pos_delimiter)
  30.                                                 )
  31.                                                 ?$pos_enclosure_start
  32.                                                 :$pos_delimiter+1;
  33.                                 }
  34.                             }
  35.                             $line = substr($line,$offset);
  36.                         }
  37.                     } else {
  38.                         $line = preg_split("/".$delimiter."/",$line);
  39.    
  40.                         /*
  41.                          * Validating against pesky extra line breaks creating false rows.
  42.                          */
  43.                         if (is_array($line) && !empty($line[0])) {
  44.                             $output[$line_num] = $line;
  45.                         }  
  46.                     }
  47.                 }
  48.                 return $output;
  49.             } else {
  50.                 return false;
  51.             }
  52.         } else {
  53.             return false;
  54.         }
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement