(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::setCsvControl — Definir o delimitador, o encapsulador e o caractere de escape para CSV
$separator = ",", string $enclosure = "\"", string $escape = "\\"): voidDefine o delimitador, o caractere de contorno e o caractere de escape para a análise dos campos CSV.
separator
O parâmetro separator define o delimitador de campo.
Precisa ser um caractere de um byte.
enclosure
O parâmetro enclosure define o caractere que cerca um campo.
Precisa ser um caractere de um byte.
escape
O parâmetro escape define o caractere de escape.
Precisa ser um caractere de um byte ou uma string vazia.
Uma string vazia ("") desabilita o mecanismo de escape proprietário.
No fluxo de entrada, o caractere enclosure
sempre pode ser escapado por duplicação dentro de uma string delimitada,
resultando em um único caractere enclosure
no resultado interpretado.
O caractere escape funciona de forma diferente:
Se uma sequência de caracteres escape e
enclosure aparecerem no fluxo,
ambos os caracteres estarão presentes no valor interpretado.
Portanto, para os parâmetros padrão, uma linha CSV como
"a""b","c\"d" terá os campos interpretados como
a"b e c\"d, respectivamente.
A partir do PHP 8.4.0, depender do valor padrão de
escape foi descontinuado.
Ele precisa ser fornecido explicitamente tanto por posição quanto pelo uso
de argumentos nomeados.
Quando o parâmetro escape for definido para algo diferente de uma string vazia
(""), isso pode resultar em um CSV que não esteja conforme a
» RFC 4180 ou que não seja capaz de sobreviver a uma viagem de ida e volta
através das funções CSV do PHP. O padrão para escape é
"\\", portanto é recomendado defini-lo explicitamente para a string vazia.
O valor padrão será alterado em uma versão futura do PHP, mas não antes do PHP 9.0.
Nenhum valor é retornado.
Lança uma ValueError se
separator ou enclosure
não tiver comprimento de um byte.
Lança uma ValueError se
escape não tiver comprimento de um byte ou se for uma string vazia.
| Versão | Descrição |
|---|---|
| 8.4.0 |
Depender do valor padrão de escape agora está
descontinuado.
|
| 7.4.0 |
O parâmetro escape agora também aceita uma string vazia
para desativar o mecanismo de escape proprietário.
|
Exemplo #1 Exemplo de SplFileObject::setCsvControl()
<?php
$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl('|');
foreach ($file as $row) {
list ($fruit, $quantity) = $row;
// Faça algo com os valores
}
?>Conteúdo de data.csv
<?php apples|20 bananas|14 cherries|87 ?>