Как удалить 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;
   }
}
→ Ссылка