diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index 7202cd7a9881f..9231cf48c5fb5 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -236,7 +236,7 @@ public function getEnv($prefix, $name, \Closure $getEnv) } if ('csv' === $prefix) { - return str_getcsv($env); + return str_getcsv($env, ',', '"', \PHP_VERSION_ID >= 70400 ? '' : '\\'); } if ('trim' === $prefix) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php index b8bc6da05cb67..c960c2f1ada2c 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php @@ -478,4 +478,37 @@ public function testRequireFile() $this->assertEquals('foo', $result); } + + /** + * @dataProvider validCsv + */ + public function testGetEnvCsv($value, $processed) + { + $processor = new EnvVarProcessor(new Container()); + + $result = $processor->getEnv('csv', 'foo', function ($name) use ($value) { + $this->assertSame('foo', $name); + + return $value; + }); + + $this->assertSame($processed, $result); + } + + public function validCsv() + { + $complex = <<<'CSV' +,"""","foo""","\""",\,foo\ +CSV; + + return [ + ['', [null]], + [',', ['', '']], + ['1', ['1']], + ['1,2," 3 "', ['1', '2', ' 3 ']], + ['\\,\\\\', ['\\', '\\\\']], + [$complex, \PHP_VERSION_ID >= 70400 ? ['', '"', 'foo"', '\\"', '\\', 'foo\\'] : ['', '"', 'foo"', '\\"",\\,foo\\']], + [null, null], + ]; + } }
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: