Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/03/2008, 06:52
shilen79
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Expresiones regulares

Buenas :)

Aquí seguimos profundizando en las bases de php y cada vez sabiendo mas y desconociendo mas aun .

Como bien comente en mi duda anterior, estoy haciendo una funcion "general" para recibir datos de un formulario de contacto evitando campos vacios, etiquetas html, etc...

Ahora estoy en el paso de , si un usuario ha de introducir un "nombre" , sean solo letras como es normal , y restringir el introducir numeros, y distintos simbolos de este modo.

No se si lo estoy enfocando mal , o me estoy saltando algo que no he visto por ningun lado....

Doy por hecho que esto se consigue mayormente con las expresiones regulares y asi lo estoy intentando pero me sucede lo siguiente:

Estoy trabajando con las funciones compatibles con Perl y no logro entender el alcance de estas funciones o como dije, algo se me escapa...

Yo tengo esto :

Código:
$cadena="/(\w{2,})/"; 

if(!preg_match($cadena,$_REQUEST['name'])){              //ESTANDAR PERL. HE DE ESPECIFICAR QUE BUSQUE 2 NUMEROS PORQUE CUANDO ENCUENTRA LA PRIMERA COINCIDENCIA PARA, POR TANTO HE DE ASEGURARME Q                                                            QUE BUSQUE LOS 2 NUMEROS Y NO 1 Y YA PARE
echo "No ha introducido un valor correcto";
}else echo " Ha introducido un valor correcto";
Yo pretendia en un principio que segun la expresion regular, sean las letras , mayusculas y minusculas, con acentos, ñ´y demas.. y que busque minimo 2 en adelante.

La cuestion es que claro , la funcion preg_match busca encontrar la primera coincidencia y entonces se para... entonces si el usuario introdujera Pepe,
la funcion al cojer Pe, ya la daria por valido.

Necesitaba una funcion que siguiera buscando todas las coincidencias y asi como tal esta la funcion preg_match_all , que devuelve matrices con las distintas coincidencias ....

Asi que si yo introduzco Pepe, devolvera las matrices:
Pepe

Pero si yo introduzco como nombre Pepe4, me seguira devolviendo Pepe, pero el 4 al no ser coincidencia ni lo huele.

Llegado a este punto pense en usar el planteamiento inverso : Es decir, usar una expresion regular que abarque todo menos las letras, acentos , ñ, etc.. y si encontraba una coincidencia habia introducido obviamente un valor incorrecto.

Pero debe haber una forma de hacerlo de forma directa que no logro entender.



No se si me habre explicado bien , pero es que llevo con esto un cacao que tela :P.Creo entender la teoria pero se me escapa algo o no estoy muy espeso para dar con lo que me falta