2010-01-03 7 views
1

je le code suivant:fichier texte ouvert lire les valeurs séparées par des virgules

$pollids = "pollids.txt"; 
$contents = file_get_contents($pollids); 
list($pollid) = explode(',', $contents); 
echo $pollid; 

Cela ouvre un fichier texte contenant une virgule liste séparée du texte: valeur1, valeur2, valeur3 etc ...

Cependant c'est seulement l'écho du premier morceau de texte dans le fichier. Comment puis-je l'obtenir en boucle/aller les chercher tous? Deuxièmement, une fois que j'ai ces valeurs, peut-être stockées dans un tableau, puis-je les nourrir dans ce morceau de script?

$summize = new summize; 
$search = $summize->search('searchterm'); 
$text = $search->results[0]->text; 

Alors que ('searchterm') est remplacé par chaque valeur dans le fichier? Encore une fois je soupçonne une sorte de boucle dans une boucle?

Répondre

1

Essayez ceci:

$pollids = "pollids.txt"; 
$contents = file_get_contents($pollids); 
$pollfields = explode(',', $contents); 

echo $pollfields[0]; // Prints the value in first "cell" 
echo $pollfields[1]; // The second 
echo $pollfields[2]; // And so on 

Ou, dans une boucle:

foreach($pollfields as $field) { 
    echo $field; 
} 

explode crée un tableau de champs séparés par ,, donc $pollfields est un tableau de ces champs, et vous pouvez nourrir les à votre deuxième extrait comme ceci:

$summize = new summize; 
foreach($pollfields as $field) { 
    $search = $summize->search($field); 
} 
$text = $search->results[0]->text; 

Sans savoir plus de comment summize fonctionne, cela devrait être ce dont vous avez besoin.

+0

@Tatu Dans un fichier CSV, afin d'avoir des champs qui contiennent des virgules, des guillemets sont utilisés pour contenir les données du champ, comme ceci: 'première valeur, deuxième, valeur ', troisième valeur' si vous avez utilisé exploser, vous obtiendrait ceci: 'array ('première valeur', '' seconde '', 'valeur' ​​',' troisième valeur ')' qui n'est pas du tout le résultat désiré. 'fgetcsv' est probablement la direction dont vous avez besoin pour aller avec cette réponse pour le faire fonctionner. –

+0

explode ne fonctionnera pas file_get_contents renvoie un seul élément de tableau – streetparade

+2

Qu'est-ce que c'est que de dire que l'utilisation de 'explode'? Gardez à l'esprit que ce n'était pas mon idée, je viens de développer le code d'OP qui utilise un 'explode'. Si j'ai bien compris, la question n'avait * rien * à voir avec comment ouvrir un fichier CSV correctement ou comment retourner toutes les lignes d'un fichier. Nous ne savons pas à quoi ressemble le matériel source d'OP, il peut s'agir d'une seule ligne de chiffres séparés par des virgules, auquel cas ma réponse est ** parfaitement valide **. "Comma separated" n'implique pas nécessairement un fichier CSV. Merci aux downvoters, cependant. –

1

Utilisez fgetcsv.

EDIT: explode ne fonctionnera pas si les valeurs contiennent par exemple les virgules sont entre guillemets.

+0

Qu'est-ce que les guillemets échappés ont à voir avec la capacité de 'explode' à diviser les chaînes à la virgule? –

+0

Je voulais dire des virgules entre guillemets, désolé. –

4

Vérifiez la fonction fgetcsv

Ce bout de code est également à partir de cette page de la documentation: (Exemple # 1 Lire et imprimer le contenu d'un fichier CSV)

<?php 
$row = 1; 
if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
} 
?> 
0
$pollids = "pollids.txt"; 
$contents = file_get_contents($pollids); 

$results = preg_split("/\s+|,/", $contents); 
$summize = new summize; 

for($i=0;$i<count($results);$i++) 
{ 
echo $results[$i]: 

$search[$i] = $summize->search($results[$i]); 
$text[$i] = $search[$i]->results[$i]->text; 
} 

print_r($results); 
print_r($search); 
print_r($text); 
0

fantasy5 $ = explode (" " file_get_contents ($ _ SERVER [ 'DOCUMENT_ROOT']"/ numbers.txt").);

lecture aléatoire (fantasy5 $); Pour ($ num = 1; $ num < = 5; $ num + = 1) {echo $ fantasy5 [$ num]

"-";}

// la sortie sera de cinq nombres aléatoires séparés par un tiret

======================== ==========================

et le contenu du fichier texte seraient que des chiffres comme ceci:

3, 8, 26, 37, 46, 8, 30, 35, 38, 41, 3, 9, 13, 20, 28, 10, 20, 21, 23, 36, 4, 23, 25, 33, 42, 1, 16, 26, 45, 46

Questions connexes