Maison >développement back-end >tutoriel php >Comment rechercher efficacement une chaîne dans un fichier avec PHP ?

Comment rechercher efficacement une chaîne dans un fichier avec PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-23 15:32:02628parcourir

How to Efficiently Check for a String in a File with PHP?

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ée 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 en utilisant 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 au sein de cette chaîne :

<code class="php">if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) {
    // do stuff
}</code>

En utilisant cette approche, nous évitons de parcourir le fichier ligne par ligne, ce qui permet d'économiser du temps et de la mémoire, en particulier pour les fichiers volumineux.

Méthode alternative (pour les fichiers extrêmement volumineux) :

Pour les fichiers excessivement volumineux, en s'appuyant sur des opérations sur les fichiers pour rechercher car une chaîne peut poser des problèmes de performances. Comme alternative, nous pouvons utiliser la commande grep :

<code class="php">if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) {
    // do stuff
}</code>

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn