Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Expresiones regulares

Estoy intentando validar que en un campo de formulario se introduzcan forzosamente dos apellidos con caracteres alfabéticos separados por un espacio, y que se considere su contenido sin evaluar los espacios anteriores y posteriores. Yo estoy usando esto (que no sé si será muy correcto):

if (ereg("^([[:alpha:]]{1,}\s{1}[[:alpha:]]{1,}){,50}$", trim($apellidos))) {
echo 'apellidos correctos';
} else {
echo 'apellidos incorrectos';
}


¿Hay alguna forma de no considerar tampoco los espacios intermedios?, es decir, que aunque el usuario introduzca apellido1, n espacios intermedios, apellido 2, la expresión sea validada a true?
Gracias de antemano.

La FAQ Expresiones regulares tiene Pertenece a la categoría:


 Respuesta de Jorge Molina  21/7/06 
Creo que la solución al problema se puede solucionar así según veo.

1.- Una cosa que he visto es que algunos usuarios ponen varios espacios en vez de uno para separar. Pensando en esto deberias hacer que, usando eregi_replace(), se cambiarán todos los espacios dobles, triples o más por un solo espacio:

$varios_espacios = " +";
$cadena = eregi_replace($varios_espacios," ",$cadena);

En este caso el signo más luego del espacio en la expresión regular significa que el espacio se puede repetir una o más veces.

2.- Borramos los espacios blancos al principio y final de la cadena usando la función trim():

$cadena = trim($cadena)

3.- Separamos la cadena donde esta el espacio con explode():

$cadena = explode(" ",$cadena);

4.- Ahora la cadena es un array con dos elementos si ingreso dos nombres. De todas maneras debería considerar contarlos porque ya que estamos tan internacionales te puede tocar alguien de un país que no use los dos apellidos (Como los alemanes).

Para acceder al apellido paterno:

$cadena[0];

... y al materno:

$cadena[1];

5.- Despues de todos estos pasos realizas la validación por separado usando un if como este:

if(funcionvalida(apellidopaterno)&&funcionvalida(apellidomaterno))
{
echo "OK";
}


En todo caso como dije sería bueno considerar que alguien puede poner un solo apellido.

Además creo que tendrás problemas porque tu validación no acepta la letra ñ ni caracteres acentuados. En todo caso si esto va a ir a una base de datos en algunos casos sería bueno indicar si admites o no acentos aunque lo de la ñ no puedes omitirlo.

Una segunda opción seria que simplemente hagas trim y luego de esto reemplaces el espacio con un caracter x como # y en la validación incluyas este caracter como valido y luego lo vuelvas a poner como espacio.
Espero que te sirva!

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

 
FAQ relacionadas
  + Utilizar PHP en IIS en Windows XP
  + Dónde aprender PHP
  + Implementar una capa de autentificación con PHP
  + Qué elegir ASP o PHP
  + Con qué tecnología programo una página
  + Porque no recibo el código PHP o ASP de las páginas?
  + Inhibir la presentación de errores en PHP
  + Lo necesario para empezar a programar en PHP y ASP
  + Hacer gráficas de líneas con datos recogidos de una base
  + Función en PHP análoga al redirect de ASP.
  + Sistema de seguridad por usuario y contraseña en PHP
  + ¿Cómo puedo insertar una función EDIT y BORRAR?
  + ¿Cómo puedo implementar música en un sistema de envío de postales?
  + Tengo un problema a la hora de implementar un scroll.
  + Comparar cadenas sin importar mayúsculas ni acentos
  + Las sentencias SQL que lanzo desde PHP no actualizan la base de datos
  + Flash no carga en PHP
  + Extensión phtml
  + Empezar a programar
  + Caracteres en PHP
  + Problema con Paginator
  + Qué es htaccess
  + Separar código HTML y PHP
  + Imágenes dinámicas con PHP
  + Web Service con PHP
  + PHP 5
  + El http.conf
  + Cómo empezar con PHP 5
  + METAS en PHP
  + Problema con enlaces
  + Webs iguales con urls distintas
  + PHP 5
  + Comprobar si una variable es un array en PHP
  + Headers already sent error
  + Actualizar navegador sin ejecutar POST
  + Bloquear el botón volver
  + Puntos decimales
  + Array en PHP
  + Libreria GD
  + Carácter @ en código PHP
  + ...

Para ver más FAQ relacionadas accede a las categorías:

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia