La verdad cuando preguntan este tipo de cosas, siempre digo "Que lo investiguen ellos mismos, que no sean flojos", pero hoy estoy de humor y no hay preguntas buenas que contestar, asi que tu validación que soporta letras de la A-Z, a-z, 0-9, #, @, $, %, &, *, (, ), espacio en blanco, y letras validas del lenguaje (acentos, dieresis, eñes, y demas) quedaria asi:
<?
$Nombre = "El texto que quieres validar";
if (preg_match("/\\A(\\w|\\#| |\\@|\\$|\\%|\\&|\\*|\\(|\\))*\\Z/",$Nombre)) {
echo "Nombre Valido";
} else {
echo "Nombre no valido.";
}
?>
Como utilizo expresiones regulares, utilize el \w para validar las letras A-Z, a-z, 0-9, acentos, dierecis y eñes, como nota, el hecho que esta validación la haga correctamente esta en relación a como dice el manual y cito textualmente:
"La definición de letras y dígitos es controlada por las tablas de caracteres de PCRE, y puede variar si se están efectuando coincidencias específicas a localidades (vea "Soporte de localidades"). Por ejemplo, en la localidad "fr" (Francia), algunos códigos de caracteres mayores a 128 son usados para letras con acentos, y éstas coinciden con \w."
Si no te funciona, puedes cambiar el \w para que funcione.
Saludos!
-
Miguel Angel
Mike79