Para este caso te bastaría con la función ereg(), ya que para una validación con un ereg a mi parecer te sobra y te basta, creo que lo estas viendo muy dificil, cuando en realidad tu debes de olvidarte de las variantes.. usando exprensiones regulares, a que me refiero con las variantes, a que tu decides que es una cadena valida.. y cual no.. por ejemplo un nombre valido tendria estas reglas...
1.- Debe de iniciar siempre con una letra (solo eso nada mas)
2.- debe de contener letras solamente y acentos
3.- una longitud minima y maxima
4.- aceptar solo un espacio intermedio si es que tuviera 2 nombres
Entonces podrias hacer algo como..
Código PHP:
<?php
function isNombre($cadena)
{
if(ereg('^[a-zA-ZáéíóúÁÉÍÓÚñÑ]{2,20}([ ]{1})?([a-zA-ZáéíóúÁÉÍÓÚñÑ]{2,20})?$',$cadena))
{
return true;
}else
{
return false;
}
}
$cadenaPrueba = 'Oscar';
echo (isNombre($cadenaPrueba))? 'El dato es valido': 'El dato es invalido';
?>