Кстати, у меня есть печальное известие: мои подозрения были не напрасны. Функция fgetcsv действительно глючит.
Тестовый пример:

Код:
<pre>
<?php
$f = fopen("test.csv","r");
$data = fgetcsv($f,1000,";");
foreach($data as $item)
echo "[$item]\n";
?>
</pre>
Входной файл (test.csv):

Код:
a;_b;_c_;"d;d";"""e;e""";"_f;f_"
Здесь пробелы из соображений наглядности заменены знаками подчеркивания -- при проведении сравнительного тестирования не забудьте провести обратную замену.
Что должно получится на выходе (проведена та же замена):

Код:
[a]
[_b]
[_c_]
[d;d]
["e;e"]
[_f;f_]
Что получается:

Код:
[a]
[b]
[c]
[d;d]
["e;e"]
[_f;f_]
Как мы видим, fgetcsv корректно обрабатывает случай внедренного разделителя, но обкусывает все ведущие и завершающие пробелы незаквоченных строк.
Такое поведение можно игнорировать пр импорте числовых данных, но оно может быть неприемлемо при импорте текстовой информации.