PHP - expresiones regulares

   
Vista:

expresiones regulares

Publicado por zendi (824 intervenciones) el 06/10/2013 23:41:13
tengo este input type text:
<TR>
<td class="sr"><?php echo "Apellidos:" ."&nbsp;" ?></td>
<TD class="sr"><input type="text" name="apellidos" size="100" align="right"/></TD>
</TR>
la logica para este codigo es aplicar una expresion regular que evite colocar Numeros sino letras porque es para un campo apellidos, y de esa manera evitar tambien que los usuarios embasuren la base de datos con caracteres extraños.
Como debo comenzar a aplicar las expresones regulares?
estuve investigando y segun la indicacion la expresion debe aceptar estos parametros:
[A-Za-z] pero no se como aplicarlo en el codigo. Les agradezco una ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

expresiones regulares

Publicado por zendi (824 intervenciones) el 07/10/2013 02:51:15
Bueno quisiera saber si por este foro es el lugar por donde debo preguntar por las expresiones regulares?, sino debiera hacer la pregunta por el foro de HTML?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

expresiones regulares

Publicado por xve (5515 intervenciones) el 07/10/2013 08:47:26
Hola Zendi, hasta donde yo se, en el html no lo puedes aplicar directamente, tienes que hacerlo con PHP, o JavaScript y posteriormente con PHP (ya que el javascript es fácilmente modificable por el usuario... por eso simpre tienes que verificar con PHP lo que llega al servidor...)

Para ello, en PHP puedes ejecutar preg_match()
http://php.net/manual/es/function.preg-match.php

Para Javascript puedes ejecutar RegExp()
http://w3schools.com/jsref/jsref_obj_regexp.asp

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por zendi (824 intervenciones) el 08/10/2013 03:17:05
Comence a desarrollar esta funcion para las expresiones regulares:

1
2
3
4
5
6
7
8
9
10
<?php
function verificar_apellido($apellido)
   {
    if(preg_match("/^([A-Za-z])",$apellido))
	{
	   return true;
    }
	   return false;
   }
?>
Y la llamo desde esta linea de codigo pero no realiza la llamada, ahora no se si falta algo mas para que envie un alerta.
1
2
3
4
5
</TR>
   <TR>
      <td class="sr"><?php echo "Apellidos:" ."&nbsp;" ?></td>
      <TD class="sr"><input type="text" name="apellidos" size="100" align="right"  verificar_apellido();/></TD>
   </TR>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por Mari Carmen (145 intervenciones) el 08/10/2013 04:32:39
En al expresión regular te falta poner el numero de repeticiones de las letras y el carácter delimitador final que en tu caso elegiste /.
Aquí http://www.pagecolumn.com/tool/pregtest.htm puedes probar tus propias expresiones regulares.

Un ejemplo de Expresión valida "/^[a-zA-z]{2,16}$/".
Si te fijas inicio y fin con el carácter delimitador /.
Para que evalúe palabras que empiezan ^ y terminan $ con alguna letra de las que hay dentro de los corchetes.
El ultimo parámetro por explicar {2,16} es el numero de ocurrencias. Este va de 2 a 16 letras. Si pusieses * o + tendría otro significado.

Si quieres saber más ve a php.net
Ref:http://www.php.net/manual/es/regexp.introduction.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

expresiones regulares

Publicado por zendi (824 intervenciones) el 08/10/2013 15:08:09
seria algo asi:?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function verificar_apellido($apellido)
   {
        if (!ereg("/^[a-zA-z]{2,16}$/",$apellido)) {
           echo "Campo Apellido Incorrecto...";
		   }
        else {
           echo "Campo Correcto";
		    }
   }
?>
 
   <TR>
      <td class="sr"><?php echo "Apellidos:" ."&nbsp;" ?></td>
      <TD class="sr"><input type="text" name="apellidos" size="100" align="right"  verificar_apellido();/></TD>
   </TR>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por Mari Carmen (145 intervenciones) el 08/10/2013 21:48:01
La idea principal es esta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$apellido="pascual";
 
if(verificar_apellido($apellido)){
	echo "Correcto\n";
}else{
	echo "Incorrecto\n";
}
 
function verificar_apellido($apellido)
{
   return preg_match("/^[a-zA-z]{2,16}$/",$apellido);
}
?>

PHP solo funciona por parte del servidor. Lo que tu intentas hacer es mucho mas sencillo usando JavaScript.

Para hacerlo con PHP tienes que enviar un formulario a un script de verificación de los campos y luego volver a cargar la pagina en la que estas con los resultados de la verificación de los campos.

El problema es que tienes que como mínimo recargar 1 vez la pagina.
1
2
3
4
5
6
7
8
9
10
Cliente->Servidor    Hace la petición de que quiere ver la pagina del formulario
Servidor->Cliente    Le da al cliente el formulario
Cliente->Servidor    El cliente envía el formulario para verificarlo
***** Esta zona se repetirá tantas veces como errores tenga en el formulario
   Servidor->Cliente    El servidor verifica los campos del formulario y le envía al cliente si son correctos o no.
        Si no son correctos el Servidor le devuelve el formulario con los errores.
   Cliente->Servidor    Envía de nuevo los campos erróneos.
******
        Si son correctos.
Servidor->Cliente le deja pasar


Con JavaScript te ahorras este paso y compruebas por la parte del Cliente
1
2
3
4
5
6
Cliente->Servidor    Hace la petición de que quiere ver la pagina del formulario
Servidor->Cliente    Le da al cliente el formulario
Cliente                       El javascript se ejecuta y verifica los resultados antes de enviarlos al servidor desde el cliente.
      Si no son correctos, lo evalúa al vuelo y te dice donde esta mal.
Y cuando este todo bien entonces.
Cliente->Servidor    El script verifica de nuevo los parámetros y te deja pasar si son correctos.

Es decir que si ponemos mal los datos del formulario 5 veces solo con PHP haces 14 envíos y recepciones de información. Frente a los 3 que se haría con JavaScript con cualquier tipo de entradas erróneas.

El numero de las Peticiones y recepciones que se realizan, tomando n como el numero de veces que te equivocas es:
Con PHP:
numero de recargas = 2*n+4
Con Javascript:
numero de recargas= 3

Como ya te dijo xve y cito:
Para Javascript puedes ejecutar RegExp()
http://w3schools.com/jsref/jsref_obj_regexp.asp


Animo y dale mas caña a la programación web.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por zendi (824 intervenciones) el 08/10/2013 23:03:55
ahora no capto la idea tal vez mas adelante, de todos modos gracias por tu contestacion, dejo de insistir en esto de expresiones regulares, quizas deba leer mas. Te aclaro que soy lento pero he aprendido mucho.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por Mari Carmen (145 intervenciones) el 08/10/2013 23:24:16
No tienes que tacharte de lento, estarás empezando y es normal no entender las cosas sin antes tener una base sólida.

Siento no poder explicarme mejor. Espero que tengas más suerte con otra persona.

Deberías revisar en este orden:
(1) Protocolo HTTP
(2) HTML basico,sintaxis, estructura, formularios, etc...
(3) JavaScript
(4) PHP.

Un saludo. Y no desistas!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por zendi (824 intervenciones) el 09/10/2013 23:44:32
Saludos Mari. Cuando te refieres a Protocolo HTTP, ¿que me quieres decir exactamente?
Yo se incrustar php en Html asimismo javascript. Igualmente he desarrollado aplicaciones, el problema es que hay cosas que todavia me faltan por comprender.
Bueno Gracias Mari.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por Mari Carmen (145 intervenciones) el 10/10/2013 12:54:42
El protocolo HTTP en si, es bastante básico. Me refiero a la forma en la que el cliente y el servidor se comunican entre ellos para poder mostrarte una pagina web. Si eso no lo tienes claro posiblemente hay muchas otras cosas que se te escapen.

Lo que yo expuse en mi último comentario son las peticiones que realiza el cliente y son contestadas por el servidor.
La expresión regular que buscas te la expliqué anteriormente y hasta te puse un ejemplo de como usarla.
He visto que en tu código HTML usas la función validar_apellidos() como una propiedad de la etiqueta td. Debes entender que PHP solo es para servidor y JavaScript es solo para el cliente. El cliente es cualquier programa que pueda comunicarse, usando en protocolo HTTP, a un servidor HTTP.(también conocido como servidor web).
Y en ese mismo fragmento de código HTML usas,por algún motivo que desconozco, PHP para insertar un string.

Con la explicacion que te di de por que hacerlo en JavaScript y no en PHP es por que el orden de peticiones que realiza el cliente al servidor es de n en PHP mientras que usando JavaScript es 1. (Tomando n por el numero de veces que el usuario intenta ingresar de forma incorrecta el formulario).
Esto significa que usando PHP tendrás que recargar la pagina n veces enseñando casi la misma información con el pequeño añadido de que se ha equivocado en algo, Y con JavaScript solo enviaría los datos una vez ya esta comprobado.

Te dije que te mirases el protocolo HTTP por que desarrollando aplicaciones que se basan en ese protocolo y no saber que pasa por detrás es como pensar que el agua mágicamente aparece en el grifo de tu casa. (Te ayudara a entender la forma en la que se comunican los clientes y servidores web).
Te dije que te mirases el HTML por que añadiste una propiedad en la etiqueta <td> que no existe y que hace referencia al código PHP, por eso lo de sintaxis. La estructura me refería a que agregues etiquetas en mayúscula cuando esta totalmente prohibido, y formularios por que parece que no entiendas como se usan.
Te dije que te mirases JavaScript por que si preguntas como hacerlo con PHP se nota que no has entendido del todo que significa que JavaScript es solo para la parte del cliente.
Y por ultimo, te dije que mirases PHP por que usas PHP en una parte de tu código donde no es necesario.

Y para terminar:
Si preguntas por la expresión regular para validar correctamente un apellido entonces la respuesta es: "/^[a-zA-z]{2,16}$/" , Teniendo en cuenta que solo tendrá entre 2 y 16 letras el apellido.
Y esto te sirve tanto para PHP como para JavaScript.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

expresiones regulares

Publicado por zendi (824 intervenciones) el 10/10/2013 15:02:00
Verdaderamente, cometi una burrada sin darme cuenta al colocar la función validar_apellidos() como una propiedad de la etiqueta td, es completamente incongurnte, pero si no me lo dices no me doy cuenta.
saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar