Foros del Web » Programando para Internet » PHP »

ctype_alpha ñ y tildes

Estas en el tema de ctype_alpha ñ y tildes en el foro de PHP en Foros del Web. Hola , tengo un problemita... probé el comando ctype_alpha para validar un campo con sólo letras pero creo que no tiene efecto ... probé con ...
  #1 (permalink)  
Antiguo 07/01/2010, 15:22
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
ctype_alpha ñ y tildes

Hola , tengo un problemita... probé el comando ctype_alpha para validar un campo con sólo letras pero creo que no tiene efecto ... probé con el setlocale(LC_ALL, "sp"); pero no tiene resultado... alguien me puede apoyar con una expresión regular que acepte todo esto?...
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 07/01/2010, 15:47
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: ctype_alpha ñ y tildes

que tal cesar , fijate si esto te puede ayudar.
Código PHP:
<?php 
function val_car($i,$esp 1){
if(
$esp 1){
$i_val preg_replace("/[^a-zA-Z\sñÑáéíóúÁÉÍÓÚ]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
if(
$esp 2){
$i_val preg_replace("/[^0-9]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
}
$a 'hola9 // mundo ñeñe';
$val_a val_car($a,1);

if(
$val_a == false){exit();}else{/*lo que tu quieras*/}
?>
ahi tienes uno para alfabetico y otro para numerico
saludos

Última edición por mauro770; 07/01/2010 a las 16:56
  #3 (permalink)  
Antiguo 07/01/2010, 16:31
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ctype_alpha ñ y tildes

Hola gracias por responder, probé tu funcion pero siempre me retorna false al escribir ñ o tildes....
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 07/01/2010, 16:59
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: ctype_alpha ñ y tildes

lo he provado y me anda perfecto ... fijate esto , lo he acomodado un poco mejor para ver si lo llegas a ver mas facil:
Código PHP:
<?php 
function val_car($i,$esp 1){
if(
$esp 1){
$i_val preg_replace("/[^a-zA-Z\sñÑáéíóúÁÉÍÓÚ]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
if(
$esp 2){
$i_val preg_replace("/[^0-9]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
}
$a 'hola muñdó'// los caracteres ñ y ó si estan permitidos por lo tanto devolvera true.
$val_a val_car($a,1);
$b 'hola$$muñdo'// los caracteres "$$" no estan permitidos por lo cual $b devolvera false.
$val_b val_car($b,1);

if(
$val_a == false){echo '"$a" contiene caracteres no permitidos<br/>';}else{echo '"$a" no presenta problemas<br/>';}
if(
$val_b == false){echo '"$b" contiene caracteres no permitidos<br/>';}else{echo '"$b" no presenta problemas<br/>';}
?>

cualquier cosa me comentas , saludos.
  #5 (permalink)  
Antiguo 07/01/2010, 17:13
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ctype_alpha ñ y tildes

no me funciona... no será porque uso el charset=ISO-8859-1 ??
__________________
Quitenme la vida pero no la bebida.
  #6 (permalink)  
Antiguo 07/01/2010, 17:26
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: ctype_alpha ñ y tildes

mira lo he probado con charset=ISO-8859-1 y no me ha dado problemas ... te sigue tirando false ?
  #7 (permalink)  
Antiguo 07/01/2010, 17:50
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ctype_alpha ñ y tildes

si... aun me retorna false. Lo pongo asi:

Código PHP:

$nombres 
=$_POST['nombres'];

function 
val_car($i,$esp 1){
if(
$esp 1){
$i_val preg_replace("/[^a-zA-Z\sñÑáéíóúÁÉÍÓÚ]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
if(
$esp 2){
$i_val preg_replace("/[^0-9]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
}

$val_a val_car($nombres,1);

if(
$val_a == false){
echo 
utf8_encode('ERROR: Tu nombre no puede llevar números.');
die ();

__________________
Quitenme la vida pero no la bebida.
  #8 (permalink)  
Antiguo 07/01/2010, 19:32
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: ctype_alpha ñ y tildes

que tal cesar ...
estube viendo tu tema ...

Código PHP:
$nombres =$_POST['nombres'];

function 
val_car($i,$esp 1){
if(
$esp 1){
$i_val preg_replace("/[^a-zA-Z\sñÑáéíóúÁÉÍÓÚ]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
if(
$esp 2){
$i_val preg_replace("/[^0-9]/"""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
}

$val_a val_car($nombres,1);

if(
$val_a == false){
echo 
utf8_encode('ERROR: Tu nombre no puede llevar números.');
die ();

asi como esta aqui, php empieza a leer el script y encuentra que $_POST['nombres'] tiene un valor NULL por que en ningun momento enviaste valores por medio de un formulario; entonces $nombres = NULL; en el momento de hacer el llamado de la funcion val_car($_nombres,1); le estamos pasando este valor que en realidad no puede ser tratado por preg_replace(); ya que NULL no es una cadena string si no que es un booleano por eso produce un conflicto en la funcion dejando a $val_a = NULL/FALSE;. entonces una vez sabiendo esto vamos a la otra parte :
hasta ahora $val_a = NULL/FALSE;.

Código PHP:
if($val_a == false){//comprueba si el falso o no , y como ya sabemos si lo es.
echo utf8_encode('ERROR: Tu nombre no puede llevar números.');// aqui imprimes que te da error por que $val_a =FALSE
die (); // aqui cortas el script y el resto de la ejecucion de la pagina es por ello que no alcanzavas a ver el
// input para poder probar realmente el script.


esto lo solucionas facil, solo le dices a PHP realice todo lo que tu quieras siempre y cuando exista el array $_POST['enviar'] que lo invocas al apretar el boton "enviar", entonces en ese monento envias el formulario y $_POST['nombres'] ya tiene un valor para poder ser tratado por val_car.

entonces el codigo quedaria asi(lo modifique para que ocupe menos espacio) :

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php 
function val_car($i,$esp 1){
if(
$esp == 1){$permitido "/[^a-zA-Z\sñÑáéíóúÁÉÍÓÚ]/" ;}
if(
$esp == 2){$permitido "/[^0-9]/" ;}
$i_val preg_replace($permitido""$i);
if(
$i !== $i_val){
return 
false;
}else{return 
true;}
}
if(isset(
$_POST['enviar'])){// aca le decimos que prosiga siempre hallan pulsado el boton enviar
$nombres =$_POST['nombres'];
$val_a val_car($nombres,1);
if(
$val_a == false){
echo 
utf8_encode('ERROR: Tu nombre no puede llevar números.');
die ();
}  
if(
$val_a == true){echo utf8_encode('NO HA SURGIDO NIGUN ERROR');}  
}
?> 
<form id="form1" name="form1" method="post" action="">
  <label>
  <input type="text" name="nombres" id="nombres" />
  </label>
  <label>
  <input type="submit" name="enviar" id="enviar" value="Enviar" />
  </label>
</form>
</body>
</html>
espero que te sirva. cualquier cosa comentas.
saludos.
  #9 (permalink)  
Antiguo 08/01/2010, 08:46
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ctype_alpha ñ y tildes

Hola gracias por responder...

Bueno en mi caso yo uso ajax y el script del servidor lo tengo en un archivo aparte... cuando $nombres es Null lo controlo con empty()


Código PHP:
if (empty($nombres)) {
echo 
'ERROR: Ingresa tu nombre.';
die ();
}

if (!empty(
$nombres)) {
    
$val_a val_car($nombres,1); 
    if(
$val_a == false){ 
    echo 
utf8_encode('ERROR: Tu nombre no puede llevar números.'); 
    die (); 
    }  

Me retorna false cuando hay numeros ... pero tambien me retorna false con las ñ y los tildes... pero con las otras letras del abecedario si me retorna true
__________________
Quitenme la vida pero no la bebida.
  #10 (permalink)  
Antiguo 08/01/2010, 11:09
Avatar de mauro770  
Fecha de Ingreso: mayo-2009
Mensajes: 109
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: ctype_alpha ñ y tildes

te tengo que pedir disculpas pero sinceramente no se cual puede ser el problema
el mejor de los exitos

Etiquetas: tildes
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




La zona horaria es GMT -6. Ahora son las 11:59.