Косяк в том, что и мой, и приведенный ниже пример работает когда строка задана явно : $str = "aaaaaaaaaaa;;;". Но вот следующая конструкция всегда выдает FALSE:
$textfile=fopen ("text.csv","r");
   while (!feof($textfile)){
      $str=fgets($textfile, 1024);
      if (ereg ("(^[^\\;]+[\\;]*$)", $str)){
         print "true";}
         else {
         print "false";} 
   }
   fclose($textfile); 
Текстовый файл text.csv:
Head1;
text1;text2
text3;text4
Head2;
text5;text6
text7;text8
В чем косяк? Все же работает, когда $str задан в коде!