Comment vérifier si un fichier contient une chaîne en PHP
Pour déterminer si une chaîne spécifique est présente dans un fichier, explorons un solution et une alternative plus efficace.
Code original :
Le code fourni tente de vérifier la présence d'une chaîne dans un fichier, désigné par la variable $id, en lisant le fichier ligne par ligne. Cependant, la condition (strpos($buffer, $id) === false) dans la boucle while vérifie de manière incorrecte l'absence de la chaîne, conduisant à la négation logique du résultat souhaité.
Solution améliorée :
Pour remédier à la situation, nous pouvons simplifier le code à l'aide de la fonction file_get_contents(), qui lit l'intégralité du fichier dans une chaîne. Ensuite, la fonction strpos() peut être utilisée pour vérifier la présence de la chaîne $id dans cette chaîne :
if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) {
// do stuff
}
En utilisant cette approche, nous évitons de parcourir le fichier ligne par ligne, ce qui peut économiser du temps et de la mémoire, en particulier pour les fichiers volumineux.
Méthode alternative (pour les fichiers extrêmement Fichiers volumineux) :
Pour les fichiers excessivement volumineux, s'appuyer sur des opérations sur les fichiers pour rechercher une chaîne peut poser des problèmes de performances. Comme alternative, nous pouvons utiliser la commande grep :
if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) {
// do stuff
}
Cette approche utilise l'utilitaire grep du système pour trouver la chaîne dans le fichier, réduisant ainsi la charge de travail sur le script PHP lui-même tout en offrant une efficacité comparable.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3