В настоящее время я сталкиваюсь с проблемой использования fgetcsv при чтении CSV-файла, содержащего специальные символы в кодировке HTML и содержимое HTML.Обычно файл разделяется точкой с запятой, но он также содержит HTML-контент с точкой с запятой.EXCEL и любой веб-просмотрщик CSV могут его прочитать, но при использовании fgetcsv он не находит правильный конец строки.
Пример файла:
1234;Example Text like grü;<p style ="none;">this is html</p>;
Пример кода:
setlocale(LC_ALL, 'de_DE.UTF-8');
header('Content-Type: text/html; charset=UTF-8');
file_put_contents("./test_tmp.csv", fopen("https://xxx/test.csv", 'r'));
$input = fopen("./test_tmp.csv", 'r'); //open for reading
$output = fopen("./test.csv", 'w'); //open for writing
// <<- I guess the csv file needs to be decoded before fgetcsv reads
// so it gets correctly delimited
while( false !== ( $data = fgetcsv($input,0,';'))){ //read each line as an array
fputs($output, implode($data)."\n");
}
//close both files
fclose( $input );
fclose( $output );
Кто-нибудь знает решение?