项目作者: ruslan-avantis

项目描述 :
Csv Reader
高级语言: PHP
项目地址: git://github.com/ruslan-avantis/csv.git
创建时间: 2017-12-11T11:11:58Z
项目社区:https://github.com/ruslan-avantis/csv

开源协议:MIT License

下载


Pllano CSV Reader

Latest Version
Software License

Read large data from csv files in parts in php

System Requirements

You need *PHP >= 5.3

Install

Install Csv Reader using Composer.

  1. $ composer require pllano/csv

or in composer.json

  1. "require": {
  2. "pllano/csv": "1.0.2"
  3. }

Fast start => tests/FastStart.php

Save the above code fragment as test.php in your Web root folder.

  1. require 'vendor/autoload.php';
  2. // require_once '/vendor/pllano/csv/src/Reader.php';
  3. // require_once __DIR__.'/src/Reader.php';
  4. $filename = 'test.csv';
  5. $csv = new Pllano\Csv\Reader($filename);
  6. $records = $csv->Read();
  7. $count = count($records);
  8. if ($count >= 1) {
  9. foreach ($records as $item) {
  10. print_r($item);
  11. print_r('<br>');
  12. }
  13. }

Read one line => tests/ReadOneLine.php

  1. require 'vendor/autoload.php';
  2. // require_once '/vendor/pllano/csv/src/Reader.php';
  3. // require_once __DIR__.'/src/Reader.php';
  4. $filename = 'test.csv';
  5. $csv = new Pllano\Csv\Reader($filename);
  6. $csv->setItemStart(10);
  7. $csv->setExecute(1);
  8. $records = $csv->Read();
  9. print_r($records);
  10. /*
  11. Array
  12. (
  13. [0] => Array
  14. (
  15. [name] => Lorem
  16. [number] => 11
  17. [price] => 22.00
  18. )
  19. )
  20. */

Real Line Key => tests/RealLineKey.php

  1. require 'vendor/autoload.php';
  2. // require_once '/vendor/pllano/csv/src/Reader.php';
  3. // require_once __DIR__.'/src/Reader.php';
  4. $filename = 'test2.csv';
  5. $csv = new Pllano\Csv\Reader($filename);
  6. $csv->setItemStart(10); // start item - default: 1
  7. $csv->setExecute(50); // amount - default: 0
  8. $records = $csv->Read();
  9. $item_start = $csv->getItemStart(); // returns 0
  10. $count = count($records);
  11. if ($count >= 1) {
  12. foreach ($records as $key => $item) {
  13. $real_key = $key + $item_start;
  14. print_r($real_key);
  15. print_r(' - ');
  16. print_r($item);
  17. print_r('<br>');
  18. }
  19. }

Example => tests/ReadRefresh.php

  1. function clean($value = '')
  2. {
  3. $value = trim($value);
  4. $value = stripslashes($value);
  5. $value = strip_tags($value);
  6. $value = htmlspecialchars($value, ENT_QUOTES);
  7. // $value = htmlentities($value);
  8. return $value;
  9. }
  10. $filename = 'test.csv';
  11. $start = 0;
  12. $rows_total = 0;
  13. if ($_GET["filename"]) {$filename = clean($_GET["filename"]);}
  14. if ($_GET["start"]) {$start = clean($_GET['start']);}
  15. // Include Composer autoloader if not already done.
  16. require 'vendor/autoload.php';
  17. // require_once '/vendor/pllano/csv/src/Reader.php';
  18. // require_once __DIR__.'/src/Reader.php';
  19. $csv = new Pllano\Csv\Reader($filename);
  20. // $csv->setDelimiter(';'); // default: ;
  21. // $csv->setEnclosure('"'); // default: "
  22. // $csv->setEscape('\\'); // default: \\
  23. // $csv->setHeaders('name;number;price'); // default: null
  24. $csv->setItemStart($start); // start item - default: 0
  25. $csv->setExecute(10); // amount - default: 0
  26. // $csv->setTimeLimit(29); // Monitoring the execution time of the script in seconds set_time_limit
  27. // $csv->setAutoDetection(false); // Auto Detection Delimiter false|true - default: false
  28. $stop = 500;
  29. $records = $csv->Read();
  30. $count = count($records);
  31. if ($count >= 1) {
  32. foreach ($records as $item) {
  33. print_r($item);
  34. print_r('<br>');
  35. }
  36. }
  37. $rows_total = $csv->countItems(); // returns total items
  38. // $csv->getHeaders(); // returns Array ( [0] => name [1] => number [2] => price )
  39. // $csv->getItemStart(); // returns string
  40. // $csv->getExecute(); // returns amount 10
  41. $end = $csv->getItemEnd(); // returns 11
  42. // $csv->getAutoDetection(); // returns false|true
  43. // $csv->getCsvControl(); // returns Array ( [0] => ; [1] => " [2] => \ )
  44. if ($filename && $end >= 0 && $rows_total >= 0) {
  45. if ($end <= $rows_total && $end <= $stop) {
  46. // start //site.com/test.php
  47. print '<meta http-equiv="Refresh" content="0; url=/test.php?filename='.$filename.'&start='.$end.'">';
  48. }
  49. if ($end >= $stop || $end >= $rows_total) {
  50. print_r('<br>');
  51. print_r('Memory, MB: '.$csv->getMemory());
  52. print_r('<br>');
  53. print_r('Time, sec: '.$csv->getTime());
  54. }
  55. }

Security

If you discover any security related issues, please email open.source@pllano.com instead of using the issue tracker.

License

The MIT License (MIT). Please see LICENSE for more information.