Stream Filters can only be used if the isActiveStreamFilter
method returns true
$reader = Reader::createFromPath(__DIR__.'/data/prenoms.csv');
if ($reader->isActiveStreamFilter()) {
$reader->appendStreamFilter(FilterTranscode::FILTER_NAME."iso-8859-1:utf-8");
$reader->appendStreamFilter('string.toupper');
$reader->appendStreamFilter('string.rot13');
}
$reader->setDelimiter(';');
$reader->setOffset(6);
$reader->setLimit(3);
$res = $reader->fetchAssoc(['Prenom', 'Occurences', 'Sexe', 'Annee']);
the data is :
Let's remove the string.toupper
stream filter
if ($reader->isActiveStreamFilter()) {
$reader->removeStreamFilter('string.toupper');
}
$reader->setOffset(6);
$reader->setLimit(3);
$res = $reader->fetchAssoc(['Prenom', 'Occurences', 'Sexe', 'Annee']);
var_dump(iterator_to_array($res, false));
isActiveStreamFilter()) {
$reader->removeStreamFilter('string.toupper');
}
$reader->setOffset(6);
$reader->setLimit(3);
$res = $reader->fetchAssoc(['Prenom', 'Occurences', 'Sexe', 'Annee']);
var_dump(iterator_to_array($res, false));
?>
You can not add/remove/update stream filters between inserts calls
$writer = Writer::createFromPath('/tmp/test.csv', 'w');
if ($writer->isActiveStreamFilter()) {
$writer->appendStreamFilter('string.toupper');
}
$writer->insertOne('je,suis,toto,le,héros');
isActiveStreamFilter()) {
$writer->appendStreamFilter('string.toupper');
}
$writer->insertOne('je,suis,toto,le,héros');
?>
When the first insert call is done... the stream filter status is frozen and can no longer be updated !! Any added row will be uppercased only no matter what.
isActiveStreamFilter()) { $writer->appendStreamFilter('string.rot13'); $writer->removeStreamFilter('string.toupper'); } $writer->insertOne('je,suis,toto,le,héros'); ?>To update the filters you need to:
$open_mode
$writer = $writer->newWriter('a+');
if ($writer->isActiveStreamFilter()) {
$writer->appendStreamFilter('string.rot13');
$writer->prependStreamFilter('string.strip_tags');
}
$writer->insertAll([
'je,suis,toto,le,héros',
'je,<strong>suis</strong>,toto,le,héros'
]);
echo $writer->newReader()->toHTML();
newWriter('a+');
if ($writer->isActiveStreamFilter()) {
$writer->appendStreamFilter('string.rot13');
$writer->prependStreamFilter('string.strip_tags');
}
$writer->insertAll([
'je,suis,toto,le,héros',
'je,suis,toto,le,héros',
]);
echo $writer->newReader()->toHTML(), PHP_EOL;
?>