Я создаю инструмент, который будет принимать CSV или файл с разделителями табуляции, который затем будет анализироваться и база данных будет удалена.Обнаружение формата файла в PHP
Загруженный файл может быть CSV или с разделителем табуляции.
Я придумал работоспособное решение (ниже) для определения формата файла, в котором может находиться файл, и хотел бы знать, есть ли лучший способ решить эту проблему и/или как любой из вас там решил проблема.
Благодаря
<?php
$csv_comma='Fruit,Color
Apple,"Red,Green"
Tomato,"Red,Green"
Banana,Yellow
Tangerine,Orange
';
$csv_semi_colon='Fruit;Color
Apple;"Red,Green"
Tomato;"Red,Green"
Banana;Yellow
Tangerine;Orange
';
$tab_delimited='Fruit Color
Apple Red,Green
Tomato Red,Green
Banana Yellow
Tangerine Orange';
$fileArr = array($csv_comma,$csv_semi_colon,$tab_delimited);
foreach($fileArr as $file){
if(preg_match('/^(.+),(.+)/',trim($file))){
echo "CSV with comma separator";
}
if(preg_match('/^(.+);(.+)/',trim($file))){
echo "CSV with semi colon separator";
}
if(preg_match('/^(.+)\t(.+)/',trim($file))){
echo "Tab delimited";
}
}
Любая эвристика даст неправильные результаты. Вы просто не можете угадать 100% прав, какой разделитель использовался – zerkms
[Здесь] (http://stackoverflow.com/a/762307/20670), как это делает Python. –
Почему бы просто не попробовать разбор csv с помощью 'fgetcsv' с', или; ... и т. д. как ваш делиметр? Если он терпит неудачу, он не должен быть действительным csv. – brbcoding