Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/08/2013, 06:17
ctnei
 
Fecha de Ingreso: agosto-2013
Mensajes: 5
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: regex para validar un campo de texto

Tienes toda la razón Hidek1, no puedo hacer lo que he hecho, sobre todo preguntar sin documentar bien la pregunta. Supongo que es parte de lo ciego que estaba cuando la hice por primera vez.

Voy a reflejar lo que hay realmente en la web para poder detectar el error adecuadamente.

Código PHP:
if (empty($_POST) === false) {
    if (empty(
$_POST['name']) === true) {
        
$errors[] = '* El campo <u>Nombre</u> es obligatorio.';
    }elseif (
preg_match('/[^A-Za-z áéíóúÁÉÍÓÚñÑçÇ-]+/'$_POST['name']) == 1) {
        
$errors[] = 'El campo <u>Nombre</u> s&oacute;lo puede contener caracteres alfab&eacute;ticos y/o el - (gui&oacute;n normal).';
    }

Sobre PUNTO 1 Hidek1 creo que has interpretado mal el código, pues $_POST está encerrado entre paréntesis. De todas formas, queda abierta la respuesta, porque cierto es que hay más cosas.
Con respecto al PUNTO 2, falta el cuantificador, cierto. Aunque sí que lo estaba poniendo, seguro que en alguna de las pruebas que realicé antes de preguntar, en una de esas -a la desesperada-, pues lo quité y así me va... ¡qué borriquito! ¡Cegatone Malone!
Con respecto al PUNTO 3 no sé si será lo correcto, pero tengo esto dentro de <head>

Código HTML:
Ver original
  1.     <meta charset="UTF-8">
  2.     ...
  3. </head>

Sobre REGEXBUDDY PUNTO 4, te diré que lo he tenido instalado, pero ya no. En aquel momento, se me hizo un mundo tan grande, que lo desestimé. Tendré que volver a instalarlo y sacarle rendimiento. Gracias Hidek1 por recordarme. Mientras trato de resolver, dejo aún la pregunta abierta.

---

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno estás bastante lejos de la respuesta.. todo mal :'D

Código PHP:
if (preg_match('/[^A-Za-z áéíóúÁÉÍÓÚñÑçÇ-]/'$_POST['name']) == 1) { 
PUNTO 1
$_POST['name']) == 1 .. es una condición, como resultado dará un boolean, y en la documentación de PHP dice que el segundo parámetro debe ser un String, el cual es el que se evaluará la expresión regular.

PUNTO 2
En la expresión regular estás omitiendo el caracter cuantificador.. por lo cual esa expresión sólo sirve si se trata de un solo caracter. ([url]http://www.php.net/manual/en/regexp.reference.meta.php[/url])

PUNTO 3
para el correcto funcionamiento de los tildes dentro de la expresión debes asegurarte de guardar el documento con la codificación adecuada o en su defecto utilizar expresiones unicode ([url]http://php.net/manual/en/regexp.reference.unicode.php[/url])

PUNTO 4
para el tema de las expresiones regulares te recomiendo bastante utilices un programa llamado REGEXBUDDY, con el puedes testear fácilmente tus regex.

saludos.