строка с разделителями табуляции в XML с PHP - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь записать содержимое переменной с разделителями табуляции в 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 Ответ

1 голос
/ 15 сентября 2011

Функция str_getcsv() возвращает одномерный массив, но вы рассматриваете его так, как будто он возвращает двумерный массив.

Edit:

Для пояснения, 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
...