Código php para buscar dato en un archivo de texto y código HTML con formulario para buscar y mostrar el dato,
PHP:
$file = "data.txt";
$search = $_POST["search"];
$lines = file($file);
foreach($lines as $line) {
if(strpos($line, $search) !== false) {
echo $line;
}
}
?>
HTML:
<form action="search.php" method="post">
Search: <input type="text" name="search"><br>
<input type="submit" value="Submit">
</form>
En este código, se busca en el archivo «data.txt» el valor ingresado en el formulario de búsqueda, y si es encontrado, se muestra en la página. El archivo «search.php» contiene el código PHP anterior.
Puedes agregar una variable para llevar un registro de si se encontró el dato y luego mostrar un mensaje de error si la variable sigue en falso después de buscar en el archivo.
$file = "data.txt";
$search = $_POST["search"];
$found = false;
$lines = file($file);
foreach($lines as $line) {
if(strpos($line, $search) !== false) {
echo $line;
$found = true;
}
}
if(!$found) {
echo "No se encontró el dato";
}
?>
Ahora si el valor buscado no se encuentra en el archivo se mostrará el mensaje «No se encontró el dato».
Puedes utilizar una expresión regular (regex) para validar que el valor ingresado en el formulario solo contenga letras y números. En PHP, puedes usar la función preg_match() para hacer esta validación.
$file = "data.txt";
$search = $_POST["search"];
$found = false;
if(preg_match("/^[a-zA-Z0-9]+$/", $search)){
$lines = file($file);
foreach($lines as $line) {
if(strpos($line, $search) !== false) {
echo $line;
$found = true;
}
}
if(!$found) {
echo "No se encontró el dato";
}
}else{
echo "Solo se admiten letras y números";
}
?>
La expresión regular /^[a-zA-Z0-9]+$/ valida que el valor ingresado comienze con una letra o número, seguido de cualquier cantidad de letras o números hasta el final de la cadena. Si el valor ingresado no cumple con esta expresión, se mostrará el mensaje «Solo se admiten letras y números».
Es recomendable que tambien valides en el lado del cliente, con javascript, para evitar que el usuario envie datos no validos y evitar asi tener que hacer comprobaciones innecesarias en el lado del servidor.
Puedes utilizar la función test() de JavaScript para validar que el valor ingresado en el formulario solo contenga letras y números. La función test() se utiliza con una expresión regular y devuelve true si el valor coincide con la expresión, o false si no lo hace.
Por ejemplo, puedes agregar un evento onsubmit al formulario para validar el valor antes de enviarlo al servidor:
<form action="search.php" method="post" onsubmit="return validate()">
Search: <input type="text" name="search"><br>
<input type="submit" value="Submit">
</form>
Y en JavaScript:
<script>
function validate() {
var search = document.forms["form"]["search"].value;
var regex = /^[a-zA-Z0-9]+$/;
if (!regex.test(search)) {
alert("Solo se admiten letras y números");
return false;
}
return true;
}
</script>
En este caso se valida que el valor ingresado en el input «search» cumpla con el regex /^[a-zA-Z0-9]+$/, si no cumple se muestra una alerta «Solo se admiten letras y números» y se interrumpe el envio del formulario. Es importante tener en cuenta que la validación en el lado del cliente es solo informativa y no debe ser considerada como seguridad ya que es posible que el usuario desactive javascript o manipule el código antes de enviar el formulario. Por eso es necesario también validar en el lado del servidor para asegurar que los datos enviados son válidos.
Otro método para buscar datos de un archivo de texto con php
Y que además recoja los datos de un formulario.
Para buscar datos en un archivo de texto con PHP, puedes usar la función fopen para abrir el archivo en modo de lectura y luego usar la función fgets para leer línea a línea del archivo. Luego, puedes usar la función strpos para buscar una cadena de texto dentro de cada línea. Si se encuentra la cadena, entonces se ha encontrado el dato que estás buscando.
Aquí tienes un ejemplo de código que ilustra cómo podrías hacerlo:
$form_data = $_POST['form_data']; // asume que form_data es el nombre de la casilla de formulario
$file = fopen('data.txt', 'r');
while (!feof($file)) {
$line = fgets($file);
if (strpos($line, $form_data) !== false) {
// se ha encontrado el dato, procesa la línea o hace lo que sea necesario
break;
}
}
fclose($file);