la recherche dans un fichier texte et d'afficher les résultats?
-
28-09-2019 - |
Question
si obtenir une entrée de l'utilisateur et j'ai voulu chercher le fichier pour tous les résultats, et d'afficher 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>';
}
je dnt obtenir ce que j'ai à faire, je veux juste afficher les lignes dans le fichier texte avec la corporation de $searchvalues
La solution
Je voudrais encore vous recommandons d'utiliser le fichier de commande:
array file ( string $filename [, int $flags = 0 [, resource $context ]] )
Lit un fichier avec chaque ligne comme un élément dans le tableau.À partir de là, vous parcourir chaque ligne (vous avez mentionné retourner les lignes dans le fichier correspondant à ce qui est pourquoi je vous recommande de 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 de l'explosion de la matrice de juste à le rejoindre à nouveau.Vous pouvez également exploser alors implode() avec le </td><td> ainsi.
Aussi, il semble que votre fichier possède des rangées de CSVs.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 les correspondances partielles de nouveau) sur le explosé variable.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) { ... }
}
Autres conseils
Ce que vous cherchez est strpos()
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
Retourne la position numérique de la première occurrence de needle dans la chaîne haystack.
Renvoie la position comme un entier.Si l'aiguille n'est pas trouvé, strpos() retourne une valeur booléenne FALSE.