2009-09-22 78 views
2

我发现这个脚本将CSV文件解析为XML。问题似乎只是在列标题之后获得第一行数据。通过PHP解析CSV为XML

function csv2xml($file, $container = 'data', $rows = 'row') 
{ 
     $r = "<{$container}>\n"; 
     $row = 0; 
     $cols = 0; 
     $titles = array(); 

     $handle = @fopen($file, 'r'); 
     if (!$handle) return $handle; 

     while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) 
     { 
      if ($row > 0) $r .= "\t<{$rows}>\n"; 
      if (!$cols) $cols = count($data); 
      for ($i = 0; $i < $cols; $i++) 
      { 
        if ($row == 0) 
        { 
         $titles[$i] = $data[$i]; 
         continue; 
        } 

        $r .= "\t\t<{$titles[$i]}>"; 
        $r .= $data[$i]; 
        $r .= "</{$titles[$i]}>\n"; 
      } 
      if ($row > 0) $r .= "\t</{$rows}>\n"; 
      $row++; 
     } 
     fclose($handle); 
     $r .= "</{$container}>"; 

     return $r; 
} 
+1

你能举一个例子吗? – Gumbo 2009-09-22 22:24:10

回答

4

您的CSV可能使用回车换行而不是换行符,请尝试将“\ n”更改为“\ r”s。

+0

你赢了!问题解决了 – mrpatg 2009-09-22 22:28:33