0

我正在尝试将变量的制表符分隔内容写入 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 函数我做错了什么?

谢谢

4

1 回答 1

1

str_getcsv()函数返回一个一维数组,但您将其视为返回一个二维数组。

编辑:

澄清一下,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
于 2011-09-14T23:19:21.677 回答