Я пытаюсь разобрать файл csv, где мои данные даны в формате, таком как:
"Total","Shazam (DE)","Total",,"215,611","538","£935.97","£60.77"
Теперь, если я дам fgetcsv (), как показано ниже:
$values = fgetcsv($f,8098);
Он возвращает мне массив:
array(9) { [0]=> string(15) ""Total"" [1]=> string(27) ""Shazam (DE)"" [2]=> string(15) ""Total"" [3]=> string(1) "" [4]=> string(9) ""215" [5]=> string(9) "611"" [6]=> string(11) ""538"" [7]=> string(19) ""£935.97"" [8]=> string(19) ""£60.77" " }
но теперь, если я даю оператор if, например:
$values = fgetcsv($f,8098); if ($values[0] == "Total") echo "Hello";
это ничего не повторяет, почему условие не выполняется? Это как-то связано с закрытыми цитатами?
Я даже попытался избежать цитат, например.
if ($values[0] == '\"Total\"') echo "Hello";
но бесполезно.
Ну, мне нужно изменить любые настройки .ini для этого? Пожалуйста, помогите мне.
EDIT: Я попытался сделать var_dump, и он показал мои значения, содержащие кавычки:
array(9) { [0]=> string(15) ""Total"" [1]=> string(27) ""Shazam (DE)"" [2]=> string(15) ""Total"" [3]=> string(1) "" ... }
но даже
$values[0] == "\"Total\""
не работает. Каким должен быть правильный компаратор?
ОБНОВЛЕНИЕ: после нескольких часов бесцельного проб и ошибок, наконец, нашел что-то раздражающее, но это устранило мою проблему.
Первоначально, когда я пытался открыть файл csv, он открыл блокнот с ÿþD "", поскольку он доволен. Я сделал это, скопировал весь файл и создал новый файл csv с тем же именем, и, к моему удивлению, он сработал.
Старый файл хорошо открывался в MS-EXCEL / NOTEPAD, но в excel каждая строка отображалась внутри одной ячейки.
Мой вопрос в том, в чем проблема с .csv fromat? С кем-либо сталкивались с такой проблемой раньше?
Я думаю, вам нужно определить классификатор текста, это называется вложением в fgetcsv . например:
$values = fgetcsv($f,8098,'"'); // the last part is: singlequote doublequote singlequote, // you could also use an escape "\""
Это означает, что анализатор не должен принимать запятую внутри текстовой области.
Вы должны уметь:
$values[0] == '"Total"'
ОБНОВИТЬ:
Проблема с открытием файла странно, вероятно, связана с кодировкой файлов, создав новый файл, вы создали его с новой кодировкой, возможно, ANSI / UTF-8 / Unicode, что-то, что было в исходном файле, а затем скопировали содержимое там , поэтому теперь он был сохранен в этом формате .. im не уверен, почему это даст вам проблемы, которые вы испытываете, но я предполагаю, что парсер каким-то образом не справляется с неправильной кодировкой.
попробуйте открыть блокнот и заметить, когда вы нажимаете «Сохранить как», вы можете выбрать кодировку в buttom, попробуйте с несколькими разными файлами с различной кодировкой, если вы хотите убедиться, что это было?