Hola,
no aclarás cuantas son las "muchas líneas" del archivo de texto, ya que puede ser determinante en el proceso.
Si el archivo ocupa menos de 64Kb (lo ideal sería que no supere los 32Kb), podrías hacer algo como:
<?php
$f = file("archivo.txt"); // carga el archivo a un vector
$valores = array();
// recorre el archivo y lo carga a los vectores
foreach($f as $linea){
$tmp = explode(":", $linea);
$valores[$tmp[0]] = $tmp[1];
}
// Busca un string
if( array_key_exists("string17", $valores) ) {
print("La clave string17 vale {$valores["string17"]}");
}
La estrategia es cargar el archivo de texto a un vector y luego buscar en el vector, que es muy eficiente.
También se podría preguntar if(isset($valores["string17"]))
Si el archivo ocupa más de 64Kb, te conviene hacer llamadas al sistema para obtener un subconjunto del archivo y no todo. Dependerá de la plataforma, pero en GNU/Linux podrías hacer algo como:
cat archivo.txt | grep string17
ejecutar el comando con exec()
y hacer lo mismo que al principio, pero ahora trabajarás solo con un subconjunto del archivo, que será más rápido.
Si el archivo ocupa 1Mb o más... deberías usar una base de datos!
Saludos!