13-3
上課範例:__fgetcsv()
01 | function __fgetcsv(& $handle , $length = null, $d = "," , $e = '"' ) { |
06 | while ( $eof != true) { |
07 | $_line .= ( empty ( $length ) ? fgets ( $handle ) : fgets ( $handle , $length )); |
08 | $itemcnt = preg_match_all( '/' . $e . '/' , $_line , $dummy ); |
09 | if ( $itemcnt % 2 == 0) |
12 | $_csv_line = preg_replace( '/(?: |[ ])?$/' , $d , trim( $_line )); |
14 | $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/' ; |
15 | preg_match_all( $_csv_pattern , $_csv_line , $_csv_matches ); |
16 | $_csv_data = $_csv_matches [1]; |
18 | for ( $_csv_i = 0; $_csv_i < count ( $_csv_data ); $_csv_i ++) { |
19 | $_csv_data [ $_csv_i ] = preg_replace( "/^" . $e . "(.*)" . $e . "$/s" , "$1" , $_csv_data [ $_csv_i ]); |
20 | $_csv_data [ $_csv_i ] = str_replace ( $e . $e , $e , $_csv_data [ $_csv_i ]); |
22 | return empty ( $_line ) ? false : $_csv_data ; |