Código php para buscar dato en un archivo de texto y código HTML con formulario para buscar y mostrar el dato,

PHP:

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

<?php
$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.

<?php
$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:

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