Вероятно, в начале первой строки есть специальный символ, а trim
не удаляет его.
Попробуйте удалить каждый символ без слова следующим образом:
// Identify headers
if(!isset($headers))
{
for($i=0;$i<$cols;$i++)
{
$headers[preg_replace("/[^\w\d]/","",strtolower($row[$i]))] = $i;
....