diff options
author | Ignace Nyamagana Butera <nyamsprod@gmail.com> | 2014-04-22 17:57:49 +0200 |
---|---|---|
committer | Ignace Nyamagana Butera <nyamsprod@gmail.com> | 2014-04-22 17:57:49 +0200 |
commit | 351ca37d0d0e350f157131bc4cfb4560a4d68067 (patch) | |
tree | ed398f8f41492c140090e26b89127cd0352ea816 /examples | |
parent | 1d8275da54dd7a994fb64ce7ac723a03e9a2e75a (diff) | |
download | csv-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.php | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | examples/stream.php | 65 |
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()); |