2010-11-04 6 views
2

si obtenir une entrée de l'utilisateur et que je voulais rechercher le fichier pour les résultats, et afficher les résultats:recherche dans un fichier texte et affiche les résultats?

$searchValue = $_POST['search']; 

$handle = @fopen("home.txt","r"); 
# read line by line 
while (($buffer = fgets($handle, 4096)) !== false && // the condtion for the $searchValue) { 
    echo '<tr>'; 
     $array = explode(',', $buffer); 
    foreach($array as $val){ 
     echo '<td>'.$val.'</td>';  
     } 
    echo '</tr>';  
} 

i dnt obtenir ce que je dois faire, je veux juste afficher les lignes de la fichier texte avec relevent searchvalues ​​de $

+0

Vous souhaitez donc rechercher un mot-clé/une expression dans un fichier txt et afficher la ligne s'il y a correspondance? – Ruel

+0

yeh exactement, merci @raul pour le signaler – getaway

Répondre

1

Je recommande même en utilisant la commande file:

array file (string $filename [, int $flags = 0 [, resource $context ]]) 

lit un fichier dans chaque ligne comme un élément du tableau. De là, vous itérer chaque ligne (vous avez mentionné revenir les lignes dans le fichier qui correspond qui est la raison pour laquelle je recommande le fichier (...)):

if (($fileLines = file('home.txt')) !== false) 
{ 
    foreach ($fileLines as $line) 
    { 
    if (strpos($line, $searchVal) !== false) 
    { // match found 
     echo '<tr><td>'.str_replace(',','</td><td>',trim($line)).'</td></tr>'; 
    } 
    } 
} 

Aucune utilisation exploser le tableau juste pour rejoindre à nouveau. Vous pouvez également l'exploser puis implode() avec le </td > <td> ainsi.

En outre, il semble que votre fichier comporte des lignes de fichiers CSV. Si c'est le cas, vous pouvez parcourir chaque ligne, puis exploser (...) les éléments et effectuer un in_array (...) (ou itérer avec strpos pour des correspondances partielles à nouveau) sur la variable éclatée. par exemple:

$values = explode(',',$line); 
// array search (while entries) 
if (in_array($searchVal,$values)) { ... } 
// array search with partial matches 
foreach ($values as $val) { 
    if (strpos($val,$searchVal) !== false) { ... } 
} 
+0

merci, pour le poste +1, qu'avez-vous voulu dire par la commande de fichier – getaway

+0

fichier est le même que fopen, fgets, fclose mais fait tout le travail pour toi. Il prend un fichier et charge un tableau avec chaque ligne dans le fichier.Par conséquent, je trouve beaucoup plus propre à prendre un fichier et le pousser dans un $ var en une ligne (bien que je n'ai jamais testé la performance, je/supposer/[jamais bon à] il serait plus rapide pour PHP d'ouvrir, d'analyser et de fermer le fichier puis de le faire moi-même) –

0

Qu'est-ce que vous cherchez est strpos()

int strpos (string $haystack , mixed $needle [, int $offset = 0 ]) 

Renvoie la position numérique de la première occurrence de l'aiguille dans la chaîne de botte de foin.

Renvoie la position sous la forme d'un nombre entier. Si needle n'est pas trouvé, strpos() retournera FALSE booléen.

+0

wow, je n'ai pas vraiment obtenir ce – getaway

Questions connexes