Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Acentos en post no aceptados en preg_match

Estas en el tema de Acentos en post no aceptados en preg_match en el foro de PHP en Foros del Web. Buenas tardes, estoy realizando una programación en la que quiero detectar una serie de carácteres, pero parece ser que el método POST me los pasa ...
  #1 (permalink)  
Antiguo 14/11/2012, 08:42
 
Fecha de Ingreso: enero-2012
Ubicación: Ontinyent
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Acentos en post no aceptados en preg_match

Buenas tardes, estoy realizando una programación en la que quiero detectar una serie de carácteres, pero parece ser que el método POST me los pasa codificados y la función no me lo interpreta correctamente.

Esto es lo que tengo.

Código PHP:
if(preg_match("(^[a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ ]+$)",$_POST['categoria'])){ 
Muchas gracias por vuestra ayuda.
  #2 (permalink)  
Antiguo 14/11/2012, 08:55
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Acentos en post no aceptados en preg_match

Cita:
Iniciado por leasti Ver Mensaje
Buenas tardes, estoy realizando una programación en la que quiero detectar una serie de carácteres, pero parece ser que el método POST me los pasa codificados y la función no me lo interpreta correctamente.

Esto es lo que tengo.

Código PHP:
if(preg_match("(^[a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ ]+$)",$_POST['categoria'])){ 
Muchas gracias por vuestra ayuda.
Y probaste pasar datos a una variable ??

Código PHP:
$categoria $_POST['categoria'];
if(
preg_match("(^[a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ ]+$)",$categoria)){ 
  #3 (permalink)  
Antiguo 14/11/2012, 08:59
 
Fecha de Ingreso: enero-2012
Ubicación: Ontinyent
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Acentos en post no aceptados en preg_match

Cita:
Iniciado por georgiy_84 Ver Mensaje
Y probaste pasar datos a una variable ??

Código PHP:
$categoria $_POST['categoria'];
if(
preg_match("(^[a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ ]+$)",$categoria)){ 
Gracias por tu rápida respuesta georgiy_84.

Lo acabo de probar, sigue sin funcionar. :(
  #4 (permalink)  
Antiguo 14/11/2012, 09:17
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 25
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Acentos en post no aceptados en preg_match

Código PHP:
<?php 
    $categoria 
'á';
        if(
preg_match("(^[áéíóúüñÁÉÍÓÚÜÑ ]+$)",$categoria)){
            echo 
'Existe acento';
        }else{
            echo 
'No Existe acento';
        }
?>
esto es para detectar acentos y si ase falta agrega mas caractere que queres detectar
  #5 (permalink)  
Antiguo 14/11/2012, 09:40
 
Fecha de Ingreso: enero-2012
Ubicación: Ontinyent
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Acentos en post no aceptados en preg_match

Cita:
Iniciado por georgiy_84 Ver Mensaje
Código PHP:
<?php 
    $categoria 
'á';
        if(
preg_match("(^[áéíóúüñÁÉÍÓÚÜÑ ]+$)",$categoria)){
            echo 
'Existe acento';
        }else{
            echo 
'No Existe acento';
        }
?>
esto es para detectar acentos y si ase falta agrega mas caractere que queres detectar
Así si que funciona, el problema lo tengo al pasarle la cadena mediante el formulario.
  #6 (permalink)  
Antiguo 20/11/2012, 07:00
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Acentos en post no aceptados en preg_match

No tengo del todo claro lo que pretendes hacer, pero creo que cambiando el pattern solucionaría tu problema.

Código PHP:
if(preg_match("/^[a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ ]+$/"$categoria)) { 
Podrías usar var_dump para verificar que es lo que te está llegando efectivamente:

Código PHP:
var_dump($_POST['categoria']); 
¿Estás teniendo en cuenta el juego de caracteres?
  #7 (permalink)  
Antiguo 20/11/2012, 09:52
 
Fecha de Ingreso: enero-2012
Ubicación: Ontinyent
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Acentos en post no aceptados en preg_match

Gracias por tu respuesta Bng5.

Lo que quiero realizar es una función que me recoja un string que paso vía post, mediante un input text, y me transforme los acentos en texto plano. Pero primero quiero detectar que en la cadena no haya ningún carácter diferente a los que lleva el alfabeto español, que son los que incluyo en el pattern.

El problema es que al pasar la cadena vía post, el preg_match sale false, en cambio, esa misma cadena la pongo en una variable y la respuesta es true.

He probado las soluciones que me has facilitado, la primera no me ha funcionado, y en cuanto al var_dump() me muestra el string tal y como lo he escrito, pero el preg_match me sigue soltando un false.

En cuanto al charset, se a lo que te refieres pero no se exactamente como hacerlo.

Muchas gracias por tu ayuda.
  #8 (permalink)  
Antiguo 20/11/2012, 10:45
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Acentos en post no aceptados en preg_match

Te paso un ejemplo de cuando el juego de caracteres te puede complicar en esta tarea.

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" dir="ltr" xml:lang="es-uy" lang="es-uy">
<head>
 <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
 <!-- meta http-equiv="content-type" content="text/html;charset=utf-8" / -->
 <title>Charset</title>
</head>
<body>

<form method="post" action="">
    <input type="text" name="categoria" value="" />
    <input type="submit" value="enviar" />
</form>

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    
$categoria $_POST['categoria'];
    if(
preg_match("/^[a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ ]+$/"$categoria)) {
        echo 
'Caracteres válidos';
    }
    else {
        echo 
'Hay caracteres no válidos';
    }
}

?>

</body>
</html>
Si guardas este archivo con una codificación UTF-8 y le envías a través del form la cadena 'áá', el navegador la enviará en ISO-8859-1 (porque es lo que indica el tag meta) y dirá:

Cita:
Hay caracteres no válidos
en cambio, si este mismo archivo lo guardas en ISO-8859-1 y envías el mismo string a través del mismo form, dirá:

Cita:
Caracteres válidos
  #9 (permalink)  
Antiguo 20/11/2012, 11:21
 
Fecha de Ingreso: enero-2012
Ubicación: Ontinyent
Mensajes: 16
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Acentos en post no aceptados en preg_match

Gracias de nuevo por tu ayuda.

La codificación la tengo en iso-8859-1

Ya no se que puede ser :(

Código HTML:
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Panel de Administraci&oacute;n</title>
    <script type="text/javascript" src="../js/jquery.js"></script>
    <script type="text/javascript" src="js/basic_scripts.js"></script>
    <!--[if IE]>
    <script type="text/javascript">
    var e = ("abbr,article,aside,audio,canvas,datalist,details,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video").split(',');
    for (var i=0; i<e.length; i++) {
    document.createElement(e[i]);
    }
    </script>
    <![endif]-->
    <link href="css/eintro.css" rel="stylesheet" type="text/css" />
    <link href="css/cabecera.css" rel="stylesheet" type="text/css" />
    <link href="css/menu.css" rel="stylesheet" type="text/css" />
    <link href="css/productos.css" rel="stylesheet" type="text/css" />
</head> 
Esto es lo que tengo en el head.
  #10 (permalink)  
Antiguo 20/11/2012, 12:10
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 14 años, 10 meses
Puntos: 24
Respuesta: Acentos en post no aceptados en preg_match

No quiero insistir mucho con esto, porque quizás no sea la causa del problema.

Lo más importante no es qué juego de caracteres estés usando, sino la consistencia y ser conciente de cual estás usando.

Recordá que los documentos PHP con el código fuente están guardados también bajo cierta codificación. Tu editor o IDE debería indicarte en algún lado bajo que codificación está cada documento.
  #11 (permalink)  
Antiguo 07/12/2012, 06:46
 
Fecha de Ingreso: octubre-2007
Ubicación: Dentro de un <div>
Mensajes: 39
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Acentos en post no aceptados en preg_match

Asegúrate que el juego de caracteres es ISO-8859-1 y no ISO-8859-15. No son "compatibles". Yo acabo de encontrar la solución así

Etiquetas: acentos, post
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 02:33.