robsonala / php-complex-parser
此包的最新版本(dev-master)没有可用的许可信息。
PHP 复杂 CSV 解析器
dev-master
2018-08-29 11:57 UTC
Requires
- php: >=7.1
- jabranr/csv-parser: *
- myclabs/php-enum: *
- symfony/property-access: *
- symfony/serializer: *
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-29 04:43:24 UTC
README
将复杂 CSV 解析为 JSON
简单用法
$str = 'CN1339361,,,,, ,Week 51 2017,Week 52 2017,Week 01 2018,Week 02 2018,Week 03 2018 Sales,1,5,6,9,1 Stock,1,7,1,2,4 Forecast,3,7,0,3,3 ,,,,, CN1339987,,,,, ,Week 51 2017,Week 52 2017,Week 01 2018,Week 02 2018,Week 03 2018 Sales,6,7,1,3,7 Stock,2,6,0,2,4 Forecast,5,0,2,2,4'; $settings = json_encode([ 'Header' => [ 'Global' => false, 'Position' => [ 'Line' => 1 ] ], 'Block' => [ 'Transpose' => false, 'Size' => 6 ], 'Columns' => [ [ 'Type' => ColumnType::Single()->getValue(), 'Name' => 'partcode', 'Position' => [ 'Line' => 0, 'Column' => 0 ] ], [ 'Type' => ColumnType::Multiple()->getValue(), 'Name' => 'sales', 'KeepHeader' => false, 'Position' => [ 'Line' => 3, 'Range' => [1, null] ] ], [ 'Type' => ColumnType::Multiple()->getValue(), 'Name' => 'stock', 'KeepHeader' => false, 'Position' => [ 'Search' => 'Stock', 'SearchColumn' => 0, 'Range' => [1, 4] ] ], [ 'Type' => ColumnType::Multiple()->getValue(), 'Name' => 'fcast', 'KeepHeader' => false, 'Position' => [ 'Search' => 'Forecast', 'SearchColumn' => 0, 'HeaderMatch' => 'Week [0-9]{1,2} 2018' ] ] ] ]); // Load CSV $parser = new PHPComplexParser(); $parser->loadCsvStr($str); // Load Settings $parser->loadSettingsJson($settings); $out = $parser->processData(); /* $out => array( array( 'partcode' => 'CN1339361', 'sales' => array(1,7,1,2,4), 'stock' => array(1,7,1,2), 'fcast' => array(0,3,3) ), array( 'partcode' => 'CN1339987', 'sales' => array(2,6,0,2,4), 'stock' => array(2,6,0,2), 'fcast' => array(2,2,4) ) ) */