Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function siesvi( $fname, $mode = 0 ) {
- $fh = fopen( $fname, 'r' );
- $headers = array();
- try {
- while ( ( $str = fgets( $fh ) ) !== false ){
- $quote = 0;
- $cell = "";
- $row = array();
- for ( $i = 0, $strlen = strlen( $str ); $i < $strlen; $i++ ){
- $chr = $str[$i];
- if ( $quote == 0 && $chr == "," ){
- $row[] = $cell;
- $cell = "";
- } elseif ( $quote == 0 && $chr == '"' ){
- $quote = 1;
- } elseif ( $quote == 1 && $chr == '"' ){
- if ( $str[ $i + 1 ] == '"' )
- $cell .= $chr;
- $quote = 0;
- } elseif ( $quote == 1 && $chr == "\n" ){
- $cell .= $chr;
- $str .= fgets( $fh );
- $strlen = strlen( $str );
- } elseif ( $quote == 1 || ( $chr != "\r" && $chr != "\n" )) {
- $cell .= $chr;
- }
- }
- $row[] = $cell;
- if ( !( $mode & 4 ) && ! $headers ){
- $headers = $row;
- continue;
- }
- if ( $mode & 1 || ! $headers ){
- if ( $mode & 2 )
- yield (object) $row;
- else
- yield $row;
- } else {
- if ( $mode & 2 )
- yield (object) array_combine( $headers, $row );
- else
- yield array_combine( $headers, $row );
- }
- }
- } catch( Exception $e ){
- echo "EXCEPTION: " . $e->getMessage();
- } finally {
- fclose( $fh );
- }
- }
- /*
- file_put_contents( __DIR__ . "/test.csv", <<<'EOD'
- id,"name",price,"notes"
- 1,"kucing ""kampung""",1000,"""Suaranya"" ""meong""
- ""meong"""
- 2,ayam", "dilepeh"""",2000,"Suaranya sreng-sreng, tadinya, pas digoreng.."
- EOD
- );
- foreach ( range(0,7) as $mode ){
- echo sprintf( "MODE = %s\r\n", $mode );
- foreach( siesvi( __DIR__ . "/test.csv", $mode ) as $k => $v) {
- echo sprintf( "Data ke-%s\r\n", $k );
- print_r( $v );
- echo "\r\n";
- //if ($k==0) break;
- }
- echo "----\r\n";
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement