За последние 24 часа нас посетили 20244 программиста и 1694 робота. Сейчас ищут 1793 программиста ...

считывание файла

Тема в разделе "PHP для новичков", создана пользователем kanapus, 15 сен 2009.

  1. kanapus

    kanapus Активный пользователь

    С нами с:
    10 мар 2009
    Сообщения:
    34
    Симпатии:
    0
    Добрый день!

    есть файл, в котором данные разделены ;

    Я считываю его следующим образом:

    • $f=fopen("ring.csv","r") or die("Ошибка!");
      for($i=0; $data=fgetcsv($f, 1000, ";"); $i++) {
      $num = count($data);
      if($num==1 && $data[0]==="")continue;

      for($c=0; $c<$num; $c++){
      print iconv('CP1251','UTF-8',$data[$c]);
      }//for
      }//for
    Если запускать на локальном компе (windows), то все отрабатывает нормально.
    Если отрабатываю на серваке (LINUX), то выводится только латиница и частично кириллица(какими-то кусками).
    Если вместо PRINT пишу VAR_DUMP, то там где кирилица (string(0)), т.е данных нет.
    На линуксовом серваке ICONV настроен. Если пробовать выводить на печать без ICONV, то кириллица также не выводится.

    В чем причина?
     
  2. kanapus

    kanapus Активный пользователь

    С нами с:
    10 мар 2009
    Сообщения:
    34
    Симпатии:
    0
    Решил проблему так:
    Код (Text):
    1.  
    2. function xfgetcsv($f='', $x='', $s=';'){
    3. if($str=fgets($f)){ $data=split($s, trim($str)); return $data; }else{ return FALSE; }
    4. }
    5.  
    6.  
    7. $fp = fopen ("ring.csv","r")or die("Ошибка!");
    8. while ($data = xfgetcsv ($fp, 1000, ";")){
    9.     $num = count($data);    
    10.     if($num==1 && $data[0]==="")continue;  
    11.     echo "<h3>Строка номер $i ($num полей):</h3>";    
    12.     for($c=0; $c<$num; $c++){
    13.             print "[$c]: ".iconv('CP1251','UTF-8',$data[$c])."<br>";
    14.     }//for
    15. }//while
    но не понятно почему первый вариант не работает?[/code]