Foros del Web » Programando para Internet » PHP »

Validar cadenas con acentos y eñ

Estas en el tema de Validar cadenas con acentos y eñ en el foro de PHP en Foros del Web. Hola tengo un problema para validar cadenas con acentos y eñes. Estoy usando el siguiente código Código: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ...
  #1 (permalink)  
Antiguo 21/03/2013, 10:22
Avatar de Lio Tse  
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 2 meses
Puntos: 0
Validar cadenas con acentos y eñ

Hola tengo un problema para validar cadenas con acentos y eñes. Estoy usando el siguiente código
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>Validar Cadenas</title>
  </head>
<?php
//Validar eñes y acentos... además
if(isset($_POST['cadenas'])){
  $cadenas=$_POST['cadenas'];
  echo "$cadenas<br>";
  if(preg_match('/^[a-z áéíóúñüÁÉÍÓÚÑÜ]+$/i',$cadenas)){
    echo "Cadenas v&aacute;lidas"; 
  }else{
    echo "Cadenas no v&aacute;lidas";
  }
}
?>
 <body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <label for="cadenas">Cadenas:</label>
      <input type="text" id="cadenas" name="cadenas" />
      <br /><br />
      <input type="submit" value="Enviar" />
    </form>
  </body>
</html>
El caso es que si le envío cadenas sin eñes ni acentos me dice "cadena válida" pero si le pongo algún acento o eñe me dice siempre "cadena no válida"...
¿ Qué es lo que estoy haciendo mal?... no consigo acertar a verlo...
Saludos
__________________
Hoy es siempre todavía
  #2 (permalink)  
Antiguo 21/03/2013, 11:31
 
Fecha de Ingreso: noviembre-2012
Ubicación: santiago
Mensajes: 23
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Validar cadenas con acentos y eñ

Código PHP:
Ver original
  1. <? echo utf8_encode("'variable")?></td>

tienes que intentar esto para meter la variable y se validan
  #3 (permalink)  
Antiguo 25/03/2013, 14:04
Avatar de Lio Tse  
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Validar cadenas con acentos y eñ

gracias por responder leon_iturra... he puesto
Código PHP:
if (preg_match('/^[a-z áéíóúñüÁÉÍÓÚÑÜ]+$/i',utf8_encode($cadenas))) 
pero sigue sin funcionar... es más el 'echo' que hago de la variable $cadenas, que antes me salía con eñes y acentos... deja de salirme si le pongo 'echo utf8_encode($cadenas)'...
pienso en algún error "ortográfico" que haya podido cometer... y que soy incapaz de detectar... o en algún otro argumento de la función preg_match que pudiera hacer que funcione correctamente... (la verdad es que conozco poco esta función)...
__________________
Hoy es siempre todavía
  #4 (permalink)  
Antiguo 25/03/2013, 15:43
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Validar cadenas con acentos y eñ

Mira lo que sucede es que con la expresion regular que usas te dirá cadena valida siempre que le mandes una cadena de texto con letras independiente mente si estas llevan eñes o acentos, si deseas una expresión que valide solo cadenas con eñes y tildes proba con esto

if (preg_match('/^[áéíóúñüÁÉÍÓÚÑÜ]+$/i',utf8_encode($cadenas)))
  #5 (permalink)  
Antiguo 26/03/2013, 10:31
Avatar de Lio Tse  
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Validar cadenas con acentos y eñ

Cita:
Iniciado por alex1084 Ver Mensaje
Mira lo que sucede es que con la expresion regular que usas te dirá cadena valida siempre que le mandes una cadena de texto con letras independiente mente si estas llevan eñes o acentos, si deseas una expresión que valide solo cadenas con eñes y tildes proba con esto

if (preg_match('/^[áéíóúñüÁÉÍÓÚÑÜ]+$/i',utf8_encode($cadenas)))
Bueno... validar cadenas con letras y además eñes y acentos es lo que pretendo... y el problema es que con ese código... en cuanto le meto un acento o una eñe me pone "cadena no válida"... ¿ es por el retorno que le da la función preg_match al if?... no lo sé... lo encuentro muy raro... pues mi impresión es que debería funcionar... pero no funciona...
__________________
Hoy es siempre todavía
  #6 (permalink)  
Antiguo 26/03/2013, 10:42
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Validar cadenas con acentos y eñ

Por eso te preguntaba que es lo que queres hacer...
Porque con la expresion que te mencioné esa NO TE PERMITIRA cadenas con acentos y eñes... no se si eso es lo que queres, y la expresion que tu inicialmente colocas esa SOLO ACEPTA cadenas con cualquier letra INCLUYENDO ACENTOS Y EÑES mmm entonces ahora por tu comentario ya no entiendo que queres...
  #7 (permalink)  
Antiguo 26/03/2013, 13:19
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Validar cadenas con acentos y eñ

Si yo hago esto asi:

Código PHP:
<?php
//Validar eñes y acentos... además

  
$cadenas="Hola tengo un árbol y una planta de piña";
  echo 
$cadenas."<br>";
  if(
preg_match("/^[a-zA-Z áéíóúAÉÍÓÚÑñ]+$/",$cadenas)){
    echo 
"Cadenas v&aacute;lidas"
  }else{
    echo 
"Cadenas no v&aacute;lidas";
  }

?>
Valida perfectamente, solo que cuando imprime el ECHO sale esto
Cita:
Hola tengo un árbol y una planta de piña
Cadenas válidas
por ello solo usas el utf8_decode cuando vas a imprimir en html, no cuando vas a validar, ya que tendrá otra codificacion y la exp_reg no la entendería y tiraría false...

Código PHP:

<?php
//Validar eñes y acentos... además

  
$cadenas="Hola tengo un árbol y una planta de piña";
  
  if(
preg_match("/^[a-zA-Z áéíóúAÉÍÓÚÑñ]+$/",$cadenas)){
    echo 
"Cadenas v&aacute;lidas<br>"
    echo 
utf8_decode($cadenas);
  }else{
    echo 
"Cadenas no v&aacute;lidas";
  }

?>
Ahora si tu objetivo es guardar las eñes y acentos en la BD te recomiendo otra cosa, pero si es por validar, eso debería validarlo.. no te validaría si llega por ejemplo la palabra AÑEJA de esta manera a&ntilde;eja
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #8 (permalink)  
Antiguo 26/03/2013, 13:30
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Validar cadenas con acentos y eñ

Probe tu código, y no me da ese error que marcas... valida la cadena, es medio tomado de los pelos, pero puede que sea la cofiguracion de tu archivo, que no este guardado en ANSI o UNICODE... guardalo en UTF-8... abretu archivo en el bloc de notas, y cuando le das guardar como tienes para cambiarle la codificación, creo que el notepad++ tambien.. y en dreamweaver no lo recuerdo.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 26/03/2013, 19:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Validar cadenas con acentos y eñ

te falta el modificador "u" en la expresión

Código:
 if(preg_match('/^[a-z áéíóúñüÁÉÍÓÚÑÜ]+$/iu',$cadenas)){
y obviamente tu archivo guardado como utf-8 en el editor además del header correspondiente
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 01/04/2013, 13:33
Avatar de Lio Tse  
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Validar cadenas con acentos y eñ

Cita:
Iniciado por loncho_rojas Ver Mensaje
Probe tu código, y no me da ese error que marcas... valida la cadena, es medio tomado de los pelos, pero puede que sea la cofiguracion de tu archivo, que no este guardado en ANSI o UNICODE... guardalo en UTF-8... abretu archivo en el bloc de notas, y cuando le das guardar como tienes para cambiarle la codificación, creo que el notepad++ tambien.. y en dreamweaver no lo recuerdo.
Gracias... saber que a tí te ha funcionado me ha animado a reescribirlo desde cero en un archivo nuevo... y ahora sí me funciona... no entiendo qué pasó... pero afortunadamente he salido del atolladero...

Posteo el código que he escrito... aunque es prácticamente igual que el que puse al principio.
Código PHP:
<?php
if (isset($_POST['cadena'])){
  
$cadena=$_POST['cadena'];
  echo 
utf8_encode($cadena)."<br>";
  if (
preg_match("/^[a-z áéíóúüñÑÁÉÍÓÚÜ]+$/i",$cadena)){
    echo 
"expresi&oacute;n v&aacute;lida";
  } else{
    echo 
"expresi&oacute;n no v&aacute;lida";
  }
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>valida cadenas</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="cadena"  /><br /><br />
<input type="submit" value="Enviar" /><br />
</form>
</body>
</html>
Gracias a todos por vuestras respuestas...

Saludos
__________________
Hoy es siempre todavía

Última edición por Lio Tse; 01/04/2013 a las 13:42

Etiquetas: acentos, cadenas, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:57.