(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.
Nota: Normalmente um caractere de
enclosuresofre escape dentro de um campo através da duplicação; entretanto, o caractereescapepode ser usado como uma alternativa. Portanto, para os parâmetros padrões os valores""e\"têm o mesmo significado. Além de permitir fazer escape no caractereenclosure, o caractereescapenão tem nenhum significado especial adicional; muito menos foi projetado para fazer escape de si mesmo.
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 ?>