Foros del Web » Programando para Internet » PHP »

Problema de codificación en un fichero php

Estas en el tema de Problema de codificación en un fichero php en el foro de PHP en Foros del Web. Hola, tengo un problema con la codificación de un fichero en php. Este fichero sólo recorre un array de objetos y los introduce en la ...
  #1 (permalink)  
Antiguo 14/12/2012, 17:43
 
Fecha de Ingreso: mayo-2004
Mensajes: 398
Antigüedad: 19 años, 11 meses
Puntos: 4
Problema de codificación en un fichero php

Hola,

tengo un problema con la codificación de un fichero en php. Este fichero sólo recorre un array de objetos y los introduce en la base de datos.

El fichero está codificado en 'UTF-8 Unicode text' y dentro del array que tiene que procesar hay objetos que contienen cadenas con acentos. Por ejemplo
array('titulo' => 'Camión').


utilizo una función para crear la url sin símbolos de acentuación y es la siguiente:


Código PHP:
Ver original
  1. // Código copiado de [url]http://cubiq.org/the-perfect-php-clean-url-generator[/url]
  2.         $slug = iconv('UTF-8', 'ASCII//TRANSLIT', $cadena);
  3.         $slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);
  4.         $slug = strtolower(trim($slug, $separador));
  5.         $slug = preg_replace("/[\/_|+ -]+/", $separador, $slug);
  6.  
  7.         return $slug;


Bueno, en windows me funciona todo bien, pero ha sido cuando lo he subido al servidor Ubuntu cuando se ha generado este problema. Es extraño para mí, porque se procesa y se inserta todos los objetos en la base de datos y después se visualiza con acentos en la web. A excepción de la url que se ha generado como si la palabra no tuviera acentos. Es decir, en la web se podría visualizar una página cuyo título pondría 'Camión' pero la url que ha generado es camin (le falta la o).

¿Alguna idea?
  #2 (permalink)  
Antiguo 15/12/2012, 13:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema de codificación en un fichero php

Código PHP:
Ver original
  1. // Esta línea es la causante:
  2. $slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);

Me extraña que en Windows funcione y en Linux no, porque con esa expresión regular eliminas todos los caracteres que no correspondan y no realizas alguna conversión.

Primero, deberías convertir los caracteres con tilde (AKA acento) a sus equivalentes sin tilde, ejemplo:

Código PHP:
Ver original
  1. $buscar = array('á', 'é', 'í', 'ó', 'ú'); // Llena con todos los que sean necesarios
  2. $reemplazar = array('a', 'e', 'i', 'o', 'u'); // Llena con los reemplazos correspondientes
  3.  
  4. $slug = str_replace($buscar, $reemplazar, $slug);
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: fichero
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.