3 declare(strict_types = 1);
28 protected const NAME =
'csv.typo3';
52 public function filter($in, $out, &$consumed, $closing): int
54 while ($bucket = stream_bucket_make_writeable($in)) {
56 $bucket->data = str_replace(
57 $this->params[
'sequence'],
61 if ($this->params[
'LF'] ===
false) {
63 $bucket->data = preg_replace(
'#\r?\n$#',
'', $bucket->data);
65 $consumed += $bucket->datalen;
66 stream_bucket_append($out, $bucket);
80 $sequence =
"\t\x1d\x1e\x1f";
85 [
'sequence' => $sequence,
'LF' => $LF]
95 if (in_array(self::NAME, stream_get_filters(),
true)) {
98 stream_filter_register(
110 return function ($element) use ($sequence) {
111 foreach ($element as &$value) {
112 if (is_numeric($value) || $value ===
'') {
115 $value = $sequence . $value;