Usa la extensión filter
Código PHP:
Ver original<?php
'email' => FILTER_VALIDATE_EMAIL,
'nombre' => FILTER_DEFAULT,
'edad' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 18, 'max_range' => 120]
]]);
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Validación</title>
</head>
<body>
<?php if ($form && $form['email'] && $form['nombre'] && $form['edad']) : ?>
<h1>Gracias!</h1>
<p>Email: <?= $form['email'] ?></p>
<p>Nombre: <?= $form['nombre'] ?></p>
<p>Edad: <?= $form['edad'] ?></p>
<?php else : ?>
<form method="post">
<input type="text" name="email" placeholder="Correo electrónico" />
<?php if ($form && empty($form['email'])) : ?> <span style="color:red">Email inválido</span>
<?php endif; ?>
<br />
<input type="text" name="nombre" placeholder="Nombre" />
<?php if ($form && empty($form['nombre'])) : ?> <span style="color:red">Nombre inválido</span>
<?php endif; ?>
<br />
<input type="text" name="edad" placeholder="Edad" />
<?php if ($form && empty($form['edad'])) : ?> <span style="color:red">Edad inválida</span>
<?php endif; ?>
<br />
<button type="submit">Enviar</button>
</form>
<?php endif; ?>
</body>
</html>
Tips para más adelante:
Para qué escribir una expresión regular para correos electrónicos si PHP proporciona una forma de saber si es válido?
Ten cuidado, los datos
sólo se validan a la entrada y se limpian
sólo en la salida.
Yo como usuario tengo derecho a elegir la contraseña que me apetezca, qué pasa si elijo "hsa23jk<j4sd>fds&*y" y tú me haces un strip tags antes de comprobar que es correcta?
pues que compararás esto "hsa23jk
<j4sd>fds&*y" con esto "hsa23jk
?fds&*y" y nunca voy a poder entrar...