使用PHP将制表符分隔的字符串转换为XML

时间:2011-09-14 22:32:52

标签: php xml tab-delimited splfileobject

我正在尝试将变量的制表符分隔内容写入XML,如下所示:

$tsvData = str_getcsv($input, "\t");
foreach($tsvData as $line => $row) {
    if($line > 0) {
        $xmlWriter->writeElement('NAME', $row[0]);
        $xmlWriter->writeElement('CAKE', $row[1]);
        $xmlWriter->writeElement('BODYPART', $row[2]);
    }
}

但是每个XML标签只写一个字符而不是每个标签之间的所有内容。当我使用SplFileObject时,从文件中获取相同的tsv数据,它可以工作。我对str_getcsv函数做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

str_getcsv()函数返回一个1维数组,但你正在对它进行处理,就像它返回一个二维数组一样。

修改

澄清一下,str_getcsv()没有“行”的概念。而不是这样做:

$tsvData = str_getcsv($input, "\t");

认为你会获得一系列的行,每行包含一列列,你必须做这样的事情:

$lines = explode("\n", $input);
$tsvData = array();
foreach ($lines as $line) {
    $tsvData[] = str_getcsv($line, "\t");
}
// now $tsvData is a 2-dimensional array of lines/columns like you were wanting