小编Tri*_*tan的帖子

在 Symfony 中设置 CsvEncoder 分隔符

我想解码 csv 文件,但其中一些有“;” 作为导致错误对象的分隔符。使用以下代码逗号分隔的 csv 文件正确解码:

https://symfony.com/blog/new-in-symfony-3-2-csv-and-yaml-encoders-for-serializer

// instantiation, when using it as a component
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\CsvEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;

$serializer = new Serializer([new ObjectNormalizer()], [new CsvEncoder()]);

// instantiation, when using it inside the Symfony framework
$serializer = $container->get('serializer');

// encoding contents in CSV format
$serializer->encode($data, 'csv');

// decoding CSV contents
$data = $serializer->decode(file_get_contents('data.csv'), 'csv');
Run Code Online (Sandbox Code Playgroud)

我尝试在解码函数中将上下文设置为参数:

$context = array(";", '"', "\\", ",");

$data = $serializer->decode(file_get_contents($file), 'csv', $context);
Run Code Online (Sandbox Code Playgroud)

并作为构造函数中的参数:

$serializer = new Serializer([new ObjectNormalizer()], [new CsvEncoder($context)]);
Run Code Online (Sandbox Code Playgroud)

两者都尝试没有任何不同的结果。

我让它以这种方式工作:

$context = …
Run Code Online (Sandbox Code Playgroud)

php csv decode symfony

5
推荐指数
2
解决办法
3838
查看次数

标签 统计

csv ×1

decode ×1

php ×1

symfony ×1