Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Парсер csv
 
 автор: andrey_94   (26.08.2009 в 22:46)   письмо автору
 
 

Это опять я.
Скачал я парсер с вашего форума, вроде работает.
Но как мне разбить все данные в разные массивы, допустим у меня есть два столбца, в одном текст про авто, в другом про самолеты.

Чтобы можно было выводить данные так $avto["avto1"]; $plane["plane1"];
Код парсера такой.

<?php
  $file 
$_POST['file'];
  
$csv_lines  file("1.csv");
  if(
is_array($csv_lines))
  {
    
//разбор csv
    
$cnt count($csv_lines);
    for(
$i 0$i $cnt$i++)
    {
      
$line $csv_lines[$i];
      
$line trim($line);
      
//указатель на то, что через цикл проходит первый символ столбца
      
$first_char true;
      
//номер столбца
      
$col_num 0;
      
$length strlen($line);
      for(
$b 0$b $length$b++)
      {
        
//переменная $skip_char определяет обрабатывать ли данный символ
        
if($skip_char != true)
        {
          
//определяет обрабатывать/не обрабатывать строку
          ///print $line[$b];
          
$process true;
          
//определяем маркер окончания столбца по первому символу
          
if($first_char == true)
          {
            if(
$line[$b] == '"')
            {
              
$terminator '";';
              
$process false;
            }
            else
              
$terminator ';';
            
$first_char false;
          }

          
//просматриваем парные кавычки, опредляем их природу
          
if($line[$b] == '"')
          {
            
$next_char $line[$b 1];
            
//удвоенные кавычки
            
if($next_char == '"')
              
$skip_char true;
            
//маркер конца столбца
            
elseif($next_char == ';')
            {
              if(
$terminator == '";')
              {
                
$first_char true;
                
$process false;
                
$skip_char true;
              }
            }
          }

          
//определяем природу точки с запятой
          
if($process == true)
          {
            if(
$line[$b] == ';')
            {
               if(
$terminator == ';')
               {

                  
$first_char true;
                  
$process false;
               }
            }
          }

          if(
$process == true)
            
$column .= $line[$b];

          if(
$b == ($length 1))
          {
            
$first_char true;
          }

          if(
$first_char == true)
          {

            
$values[$i][$col_num] = $column;
            
$column '';
            
$col_num++;
          }
        }
        else
          
$skip_char false;
      }
    }
  }
   
var_dump($values);





?>

  Ответить  
 
 автор: nikita2206   (26.08.2009 в 22:53)   письмо автору
 
   для: andrey_94   (26.08.2009 в 22:46)
 

В пхп есть встроенный парсер csv, думаю он будет более производителен

  Ответить  
 
 автор: andrey_94   (26.08.2009 в 23:07)   письмо автору
 
   для: nikita2206   (26.08.2009 в 22:53)
 

Сделал так..... но возникает тот же вопрос.
Нужно чтобы каждое поле соответствовало определенной переменной, как можно так сделать?

Вот код.

<?php
$row 
1;
$handle fopen ("1.csv","r");
while (
$data fgetcsv ($handle1000","))
{
    
$num count ($data);
    print 
"<p>строка $row:</p>";
    
$row++;
    for (
$c=0$c $num$c++)
    {
        print 
$data[$c] ."<br>";
    }
}
fclose ($handle);
?>

  Ответить  
 
 автор: nikita2206   (26.08.2009 в 23:11)   письмо автору
 
   для: andrey_94   (26.08.2009 в 23:07)
 

Что такое поле? Правда не знаю что это) знаю строка столбик ячейка а поле не знаю

  Ответить  
 
 автор: andrey_94   (26.08.2009 в 23:14)   письмо автору
 
   для: nikita2206   (26.08.2009 в 23:11)
 

Ну, в экеселе есть строка, и она разделена на части, вот эти самые части и есть поля

  Ответить  
 
 автор: andrey_94   (26.08.2009 в 23:15)   письмо автору
 
   для: andrey_94   (26.08.2009 в 23:14)
 

Поле это тоже самое что и ячейка

  Ответить  
 
 автор: andrey_94   (26.08.2009 в 23:32)   письмо автору
 
   для: nikita2206   (26.08.2009 в 23:11)
 

Ячейка это поле ))) один смысл

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования