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.
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