请注意,此函数不会神奇地从给定文件中猜测 CSV 控制,而是返回之前使用 SplFileObject::setCsvControl() 设置的内容。
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::getCsvControl — 获取用于 CSV 的分隔符、包围符和转义符
此函数没有参数。
返回一个包含分隔符、包围符和转义符的索引数组。
版本 | 描述 |
---|---|
7.4.0 | 转义符现在可以为空字符串。 |
7.0.10 | 在返回的数组中添加了转义符。 |
示例 #1 SplFileObject::getCsvControl() 示例
<?php
$file = new SplFileObject("data.txt");
print_r($file->getCsvControl());
?>
上面的示例将输出类似于以下内容
Array ( [0] => , [1] => " [2] => \ )
请注意,此函数不会神奇地从给定文件中猜测 CSV 控制,而是返回之前使用 SplFileObject::setCsvControl() 设置的内容。
给定 CSV 或任何文本文件的绝对路径以及可能的定界符列表,并假设行长不超过 4096 个字符,我使用
<?php
function guess_delimiter($file, $delimiters=[',',';'])
{
$h = fopen($file,'r');
$count = [];
foreach ($delimiters as $del) {
$count[$del] = 0;
while (($bufer = fgets($h, 4096)) !== false) {
$count[$del]+=substr_count($bufer, $del);
}
rewind($h);
}
fclose($h);
return array_search(max($count), $count);
}