Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[SOLUCIONADO] Problema con acentos en php wordpress

Estas en el tema de Problema con acentos en php wordpress en el foro de WordPress en Foros del Web. Hola a todos, Tengo un problema con los dichosos acentos en Wordpress que llevo una semana intentando solucionar y no doy con ello por mucho ...
  #1 (permalink)  
Antiguo 21/11/2014, 04:01
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 13 años, 2 meses
Puntos: 1
Problema con acentos en php wordpress

Hola a todos,

Tengo un problema con los dichosos acentos en Wordpress que llevo una semana intentando solucionar y no doy con ello por mucho que busco en foros y pruebas que hago.

Básicamente, las funciones php que uso, no localizan los acentos en cadenas que vienen de la base de datos.

Pongo un ejemplo: Supongamos que tengo la cadena "cañón máximo" metido en la base de datos y tengo el siguiente código:

Código PHP:
$cadena=obtener_cada_base_de_datos();

echo 
quitar_acentos($cadena);

// muestra  la misma cadena:"cañon máximo";
// no encuentra ni acentos ni ñ.


function quitar_acentos($cadena){

$find = array('á''é''í''ó''ú''ñ');

$repl = array('a''e''i''o''u''n');

$cadenastr_replace ($find$repl$cadena);

reurn $cadena;


La función anterior no encuentra los acentos, y por tanto, no me hace ningún cambio en la cada. Entonces, ¿que tengo que poner el array "$find" para que encuentre los acentos?

La configuración que tengo en la base de datos es ( he probado distintas combinaciones, pero arreglo una cosa y se estropeo otra (p.e. los acentos en html deja de verse)):
  • archivo WP_CONFIG.PHP: define('DB_CHARSET', 'utf8');
  • head HTML: <meta charset="utf-8">
  • MySql:
    • Base de datos: utf8_general_ci
    • Tabla:utf8_general_ci
    • Campo:utf8_general_ci


Por otra parte he visto que es un problema de WordPress, pus si trato de hacer esto fuera de wordpress no hay problema.


Bueno a ver si alguien me ilumina o me da alguna pista.

Muchas Gracias a todos!!

Última edición por albertoshu; 21/11/2014 a las 06:03 Razón: clarificar la pregunta
  #2 (permalink)  
Antiguo 21/11/2014, 07:58
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.747
Antigüedad: 12 años, 7 meses
Puntos: 1134
Respuesta: Problema con acentos en php wordpress

tienes un error en -> reurn $cadena;

debe ser -> return $cadena;

Si no tienes activado el debug pudiste haberlo pasado por alto.... aparte de eso, no has intentado con
Código PHP:
Ver original
  1. echo htmlentities($cadena);
de esa forma se imprimirán estos caracteres en su equivalente html
Cita:
ca&ntilde;&oacute;n m&aacute;ximo
  #3 (permalink)  
Antiguo 21/11/2014, 11:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Problema con acentos en php wordpress

Muchas Gracias Arturo!! Problema resuelto.

Con "htmlentities" he podido ver qué caracteres se estaban pasando para los acentos y la ñ. En consecuencia el el array $find debe de ser así:

Código PHP:
 $find = array('á''é',  'ó''ú''ñ','Ã');
$repl = array('a''e',  'o''u''n','i'); 
Ahora ya se cambian quitan los acentos y puedo hacer URL amigables!


Solo una cosa me me mosquea un poco. He buscado por foros y por todas partes y no he encontrado nunca que la solución sean estos caracteres tan raros (á = á).
Esto es normal? Esto no resulta muy ortodoxo, no?

GRacias a otra vez!!!
  #4 (permalink)  
Antiguo 21/11/2014, 11:13
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 18 años, 9 meses
Puntos: 193
Respuesta: Problema con acentos en php wordpress

No tienes por que hacerlo a mano, en WordPress existe la funcion sanitize_title que es la que se encarga de generar URL amigables.
  #5 (permalink)  
Antiguo 21/11/2014, 11:42
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Problema con acentos en php wordpress

Gracias TMeister!!! lo he probado, también funciona!!

Etiquetas: acentos, caracteres-especiales, php
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 18:29.