SplFileObject::getCsvControl
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
SplFileObject::getCsvControl — Get the delimiter, enclosure and escape character for CSV
说明
Gets the delimiter, enclosure and escape character used for parsing CSV fields.
参数
此函数没有参数。
返回值
Returns an indexed array containing the delimiter, enclosure and escape character.
更新日志
版本 | 说明 |
---|---|
7.4.0 | The escape character can now be an empty string. |
7.0.10 | Added the escape character to the returned array. |
示例
示例 #1 SplFileObject::getCsvControl() example
<?php
$file = new SplFileObject("data.txt");
print_r($file->getCsvControl());
?>
以上示例的输出类似于:
Array ( [0] => , [1] => " [2] => \ )
参见
- SplFileObject::setCsvControl() - Set the delimiter, enclosure and escape character for CSV
- SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields
- SplFileObject::fputcsv() - Write a field array as a CSV line
- fputcsv() - 将行格式化为 CSV 并写入文件指针
- fgetcsv() - 从文件指针中读入一行并解析 CSV 字段
- str_getcsv() - 解析 CSV 字符串为一个数组
+添加备注
用户贡献的备注 3 notes
greg dot bowler at g105b dot com ¶
10 years ago
Note that this function does not magically guess the CSV control from a given file, rather it returns what has been priorly set with SplFileObject::setCsvControl().
faure dot daniel dot 57 at gmail dot com ¶
3 years ago
Given an absolute path to a CSV or any text file and a list of possible delimiters and assuming lines are up to 4096 characters long, I use
<?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);
}
备份地址:http://www.lvesu.com/blog/php/splfileobject.getcsvcontrol.php