"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo comprobar de manera eficiente una cadena en un archivo con PHP?

¿Cómo comprobar de manera eficiente una cadena en un archivo con PHP?

Publicado el 2024-11-08
Navegar:701

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

Cómo comprobar si un archivo contiene una cadena en PHP

Para determinar si una cadena específica está presente dentro de un archivo, exploremos un solución y una alternativa más eficiente.

Código original:

El código proporcionado intenta verificar la presencia de una cadena en un archivo, indicada por la variable $id , leyendo el archivo línea por línea. Sin embargo, la condición (strpos($buffer, $id) === false) en el bucle while verifica incorrectamente la ausencia de la cadena, lo que lleva a la negación lógica del resultado deseado.

Solución mejorada:

Para rectificar la situación, podemos simplificar el código usando la función file_get_contents(), que lee el archivo completo en una cadena. Luego, la función strpos() se puede utilizar para verificar la presencia de la cadena $id dentro de esta cadena:

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

Al utilizar este enfoque, evitamos iterar a través del archivo línea por línea, lo que puede ahorrar tiempo y memoria, especialmente para archivos grandes.

Método alternativo (para archivos extremadamente Archivos grandes):

Para archivos excesivamente grandes, confiar en operaciones de archivos para buscar una cadena puede plantear desafíos de rendimiento. Como alternativa, podemos utilizar el comando grep:

if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) {
    // do stuff
}

Este enfoque utiliza la utilidad grep del sistema para encontrar la cadena en el archivo, lo que reduce la carga de trabajo del script PHP y proporciona una eficiencia comparable.

Declaración de liberación Este artículo se reimprime en: 1729665916 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3