2010-07-16 6 views
0

J'ai écrit un petit code pour lire dans un fichier texte plat et l'afficher. Mon problème est que l'un des champs a beaucoup de texte et aussi des retours de ligne. Mon code utilise la ligne return est un délimiteur et passe à l'enregistrement suivant.Comment dire exploser pour ignorer les flux de ligne?

Comment puis-je lui dire de ne diviser que par le délimiteur et d'ignorer les retours de ligne?

Exemple de code J'utilise:

$delimiter = chr(1); 

$fp = fopen('app2','r'); 
if (!$fp) {echo 'ERROR: Unable to open file.</table></body></html>'; exit;} 

$loop = 0; 
while (!feof($fp)) { 
    $loop++; 
    $line = fgets($fp,2048); //use 2048 if very long lines 
    $field[$loop] = explode ($delimiter, $line); 
    echo ' 
<tr> 
<td>'.$field[$loop][0].'</td> 
<td>'.$field[$loop][1].'</td> 
<td>'.$field[$loop][2].'</td> 
<td>'.$field[$loop][3].'</td> 
<td>'.$field[$loop][4].'</td> 
<td>'.$field[$loop][5].'</td> 
<td>'.$field[$loop][6].'</td> 
<td>'.$field[$loop][7].'</td> 
<td>'.$field[$loop][8].'</td> 
<td>'.$field[$loop][9].'</td> 
<td>'.$field[$loop][10].'</td> 
<td>'.$field[$loop][11].'</td> 
<td>'.$field[$loop][12].'</td> 
<td>'.$field[$loop][13].'</td> 
<td>'.$field[$loop][14].'</td> 
<td>'.$field[$loop][15].'</td> 
<td>'.$field[$loop][16].'</td> 

</tr>'; 
    $fp++; 
} 

fclose($fp); 
?> 

Vous pouvez voir ce qu'il fait ici http://www.smartphonesoft.com/fred/xmlfeed/test/itunes_to_mysql.php

+0

Votre lien nécessite une authentification. – relet

+0

Vous aurez probablement besoin d'une bonne classe d'analyse CSV pour gérer cela. –

+0

Vous n'avez peut-être pas besoin d'une classe d'analyse * CSV *, PHP a [l'analyse syntaxique CSV simple est intégrée] (http://us2.php.net/manual/fr/function.fgetcsv.php). – Charles

Répondre

0

Vous pouvez coller votre fichier texte dans un $var, par jaust ajoutant tout avec .=, aussi longtemps que votre le fichier ne fait pas 2Go de large.

Remarque: la taille de la chaîne peut atteindre 2 Go.

Questions connexes