SplFileObject::getCsvControl
(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] => \ )
参考
- SplFileObject::setCsvControl() - CSV の区切り文字、囲み文字、エスケープ文字をセットする
- SplFileObject::fgetcsv() - ファイルから行を取り出し CSV フィールドとして処理する
+add a note
User Contributed Notes 3 notes
greg dot bowler at g105b dot com ¶
9 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);
}
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google