summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorIgnace Nyamagana Butera <nyamsprod@gmail.com>2014-04-22 17:57:49 +0200
committerIgnace Nyamagana Butera <nyamsprod@gmail.com>2014-04-22 17:57:49 +0200
commit351ca37d0d0e350f157131bc4cfb4560a4d68067 (patch)
treeed398f8f41492c140090e26b89127cd0352ea816 /examples
parent1d8275da54dd7a994fb64ce7ac723a03e9a2e75a (diff)
downloadcsv-351ca37d0d0e350f157131bc4cfb4560a4d68067.zip
csv-351ca37d0d0e350f157131bc4cfb4560a4d68067.tar.gz
csv-351ca37d0d0e350f157131bc4cfb4560a4d68067.tar.bz2
Update Stream examples with extensive comments
Diffstat (limited to 'examples')
-rwxr-xr-x[-rw-r--r--]examples/lib/FilterTranscode.php8
-rwxr-xr-x[-rw-r--r--]examples/stream.php65
2 files changed, 63 insertions, 10 deletions
diff --git a/examples/lib/FilterTranscode.php b/examples/lib/FilterTranscode.php
index 30cf1ca..2a0b795 100644..100755
--- a/examples/lib/FilterTranscode.php
+++ b/examples/lib/FilterTranscode.php
@@ -2,9 +2,11 @@
namespace lib;
+use php_user_filter;
+
class FilterTranscode extends php_user_filter
{
- private static $name = 'convert.transcode.';
+ const FILTER_NAME = 'convert.transcode.';
private $encoding_from = 'auto';
@@ -12,11 +14,11 @@ class FilterTranscode extends php_user_filter
public function onCreate()
{
- if (strpos($this->filtername, self::$name) !== 0) {
+ if (strpos($this->filtername, self::FILTER_NAME) !== 0) {
return false;
}
- $params = substr($this->filtername, strlen(self::$name));
+ $params = substr($this->filtername, strlen(self::FILTER_NAME));
if (! preg_match('/^([-\w]+)(:([-\w]+))?$/', $params, $matches)) {
return false;
}
diff --git a/examples/stream.php b/examples/stream.php
index 927e22e..1bab113 100644..100755
--- a/examples/stream.php
+++ b/examples/stream.php
@@ -1,17 +1,68 @@
<?php
+header('Content-type: text/html; charset=utf-8');
+
+error_reporting(-1);
+ini_set('display_errors', 1);
+
use League\Csv\Reader;
+use League\Csv\Writer;
use lib\FilterTranscode;
require '../vendor/autoload.php';
require 'lib/FilterTranscode.php';
-stream_filter_register(FilterTranscode::$name."*", "FilterTranscode");
+//BETWEEN fetch* call you CAN update/remove/add stream filter
-$reader = new Reader('path/to/chinese/file.csv');
-$reader->appendStreamFilter(FilterTranscode::$name."big5:utf8");
-$reader->setOffset(1);
-$reader->setLimit(10);
-$res = $reader->fetchAll();
+stream_filter_register(FilterTranscode::FILTER_NAME."*", "\lib\FilterTranscode");
+$reader = new Reader('data/prenoms.csv');
+$reader->appendStreamFilter(FilterTranscode::FILTER_NAME."iso-8859-1:utf-8");
+$reader->appendStreamFilter('string.toupper');
+$reader->prependStreamFilter('string.rot13');
+$reader->setDelimiter(';');
+$reader->setOffset(6);
+$reader->setLimit(3);
+$res = $reader->fetchAssoc(['Prenom', 'Occurences', 'Sexe', 'Annee']);
+/*
+the data is :
+ - transcoded by the Stream Filter from ISO-8859-1 to UTF-8
+ - uppercased
+ - rot13 transform
+*/
+var_dump($res);
+$reader->removeStreamFilter('string.toupper');
+$reader->setOffset(6);
+$reader->setLimit(3);
+$res = $reader->fetchAssoc(['Prenom', 'Occurences', 'Sexe', 'Annee']);
+/*
+the data is :
+ - transcoded by the Stream Filter from ISO-8859-1 to UTF-8
+ - rot13 transform
+*/
+var_dump($res);
-print_r($res); //the data is transcoded by the Stream Filter from BIG5 to UTF-8
+//BETWEEN insert* call you CAN NOT update/remove/add stream filter you MUST call a new Writer instance
+// This is a side effect because we don't want to mess with the file cursor position during all your
+// insertion
+touch('/tmp/test.csv');
+$writer = new Writer(new SplFileInfo('/tmp/test.csv'), 'w');
+$writer->appendStreamFilter('string.toupper');
+$writer->insertOne('je,suis,toto,le,héros');
+$writer->appendStreamFilter('string.rot13');
+$writer->insertOne('je,suis,toto,le,héros');
+/*
+the data is :
+ - uppercased only
+*/
+$writer = new Writer(new SplFileInfo('/tmp/test.csv'), 'a+');
+$writer->appendStreamFilter('string.toupper');
+$writer->appendStreamFilter('string.rot13');
+$writer->insertOne('je,suis,toto,le,héros');
+/*
+the data is :
+ - uppercased
+ - rot13 transform
+*/
+$reader = new Reader('/tmp/test.csv');
+$reader->setFlags(SplFileObject::READ_AHEAD|SplFileObject::SKIP_EMPTY);
+var_dump($reader->fetchAll());