Как удалить bom из csv?
Пытаюсь в цикле выводить строки из csv-файла, но если в файле bom то файл некорректно обрабатывает строки.
Как удалить bom?
if (($handle = fopen($this->filename, "r")) !== FALSE) {
$delimiter = $this->detectDelimiter($this->filename);
$row = 0;
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
if($row === 0 && $data[0] == 'first_name'){//здесь даже если значение 'first_name'
// то проверка не срабатывает если в файле `bom`
continue;
}
Ответы (1 шт):
Автор решения: mepihindeveloper
→ Ссылка
Попробуйте следующее регулярное выражение для вашей строки:
$bom = pack('H*', 'EFBBBF');
$str = preg_replace("/^$bom/", '', $bomStr);
Как вариант можно использовать аналогичную функцию:
function removeBomUtf8($s){
if(substr($s,0,3)==chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF'))){
return substr($s,3);
}else{
return $s;
}
}