2011-09-14 3 views
0

Je suis en train d'écrire le contenu délimité par des tabulations d'une variable XML comme ceci:chaîne délimité par des tabulations XML avec PHP

$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]); 
    } 
} 

Mais il est écrit qu'un seul caractère par balise XML au lieu de tout entre chaque onglet. Lorsque j'utilise SplFileObject, en obtenant les mêmes données tsv mais à partir d'un fichier, cela fonctionne. Qu'est-ce que je fais de mal avec la fonction str_getcsv?

Merci

+0

Quelle est la 'var_dump ($ line) 'et le' var_dump ($ tsvData) '? –

+0

var_dump pour $ tsvData est correct, mais $ line me donne un seul tableau d'ints. drrcknlsn l'a expliqué ci-dessous. Merci de votre aide. – Matt

Répondre

1

La fonction str_getcsv() retourne un tableau 1 dimensions, mais vous le traiter comme il est de retour d'un tableau à 2 dimensions.

Edit:

Pour clarifier, str_getcsv() n'a pas de concept de "lignes". Au lieu de faire ceci:

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

pensant que vous obtiendrez un tableau de lignes, chacune contenant un tableau de colonnes, vous devez faire quelque chose comme ceci:

$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 
+0

Ah, oui. Je pensais que cela fonctionnait comme SplFileObject, mais pour les données déjà contenues dans la page. Merci de votre aide! Cela fonctionne très bien. – Matt

Questions connexes