У меня возникают проблемы с разбором файла csv в php, используя fopen(), берущие данные API.Parsing PHP с проблемой кодирования fopen()
Мой код работает, когда я использую URL-адрес, который отображает файл csv в браузере, как указано в 1) ниже. Но я получаю случайные символы, выводимые из URL-адреса, который заканчивается в формате = csv, как показано в 2) ниже.
1)Рабочий URL: Возвращается ожидаемые значения https://www.kimonolabs.com/api/csv/duo2mkw2?apikey=yjEl780lSQ8IcVHkItiHzzUZxd1wqSJv
2)не работает URL: Возвращает случайные символы https://www.parsehub.com/api/v2/projects/tM9MwgKrh0c4b81WDT_4FkaC/last_ready_run/data?api_key=tD3djFMGmyWmDUdcgmBVFCd3&format=csv
Вот мой код : - с помощью URL (2) выше
<?php
$f_pointer=fopen("https://www.parsehub.com/api/v2/projects/tM9MwgKrh0c4b81WDT_4FkaC/ last_ready_run/data?api_key=tD3djFMGmyWmDUdcgmBVFCd3&format=csv","r");
while(! feof($f_pointer)){
$ar=fgetcsv($f_pointer);
echo $ar[1];
echo "<br>";
}
?>
Выход: Для получения URL, указанного в (2) выше:
корень @ MorryServer:/# PHP testing.php
? IU? Q? JL??/Q? R? /)? J-.?))VH?/OM?K-NI?T0?P?*ͩT0204jz Դ? H ??? X? ? @ D ?? K
Правильный выход: Если я использую URL типа, как указано в (1)
корень @ MorryServer:/# PHP testing.php
PHP Примечание: Undefined смещение: 1 в/testing.php на линии 24
джекпота € 2.893.210
Первые URL возвращает данные с тем, что выглядит как название в качестве первого значения. Это недопустимый CSV (или, по крайней мере, нетрадиционный), поэтому функции CSV PHP будут иметь проблемы с этим. Второй URL, похоже, возвращает допустимые значения CSV. Вместо использования 'fopen' (который вы не должны использовать в любом случае, это низкоуровневая функция, которая должна использоваться только в том случае, если вам нужно ее использовать), вы должны использовать что-то вроде' str_getcsv', которое было создано для таких вещей, как это. –
Привет, Сверри, первый URL-адрес в порядке, я могу удалить заголовки, проблема - странный вывод для 2). Мне нужен код для работы с parsehub url –
Что вы получите, если вы запустите это: 'php -r 'echo mb_internal_encoding();" Второй URL выглядит отлично. Он возвращает файл с mimetype 'text/csv', закодированный с помощью' UTF-8'. Немного устаревшие версии PHP по умолчанию использовали 'iso-8859-1'. В более новых версиях используется 'utf-8'. Какова ваша версия PHP? –