Foros del Web » Programando para Internet » PHP »

Fecha Setlocale es_ES caracteres con acento

Estas en el tema de Fecha Setlocale es_ES caracteres con acento en el foro de PHP en Foros del Web. Tengo esta función: <?php class Destination { var $filename; function Destination($filename) { $this->set_filename($filename); } function filename_escape($filename) { return preg_replace("/[^a-z0-9-]/i","_",$filename); } function get_filename() { return empty($this->filename) ...
  #1 (permalink)  
Antiguo 30/03/2011, 03:04
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Fecha Setlocale es_ES caracteres con acento

Tengo esta función:

<?php
class Destination {
var $filename;

function Destination($filename) {
$this->set_filename($filename);
}

function filename_escape($filename) { return preg_replace("/[^a-z0-9-]/i","_",$filename); }

function get_filename() { return empty($this->filename) ? OUTPUT_DEFAULT_NAME : $this->filename; }

function process($filename, $content_type) {
die("Oops. Inoverridden 'process' method called in ".get_class($this));
}

function set_filename($filename) { $this->filename = $filename; }
}
?>

Lo que pasa es que los caracteres con acento á, é, í, ó, ú me los reemplaza con un "_".

Necesito que esos caracteres me los despliegue sin acento a, e, i, o, u.

De modo que Sábado -> Sabado y Miércoles -> Miercoles.

Saludos y gracias por la ayuda.
  #2 (permalink)  
Antiguo 30/03/2011, 06:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Fecha Setlocale es_ES caracteres con acento

En ese caso puedes usar str_replace y asignar los valores en arrays.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 30/03/2011, 09:19
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Fecha Setlocale es_ES caracteres con acento

probaste con

setlocale(LC_TIME, 'es_ES.UTF-8');
strftime( '%e de %B de %Y', strtotime($date) )

son funciones de php, mira la documentacion , espero que te sirva
  #4 (permalink)  
Antiguo 30/03/2011, 10:55
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Fecha Setlocale es_ES caracteres con acento

La función me genera el nombre de un documento PDF, y la cadena se genera correctamente pero para caracteres tildados o con acentos lo sutituye por "_", he encontrado que esa sutitución ocurre en la función que puse al inicio de este tema y quiero poder decirle a esa función que las sustituya según mi propia regla a modo de lograr que no sean tildadas.

á -> a
é -> e
í -> i
ó -> o
ú -> u
  #5 (permalink)  
Antiguo 30/03/2011, 10:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Fecha Setlocale es_ES caracteres con acento

Ya te lo indique con str_replace lo puedes hacer, usando arrays.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 30/03/2011, 11:01
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Fecha Setlocale es_ES caracteres con acento

Cita:
Iniciado por abimaelrc Ver Mensaje
Ya te lo indique con str_replace lo puedes hacer, usando arrays.
Ya lo hice y no funcionó:

setlocale(LC_TIME, 'es_ES');
$cadena = strftime('%a%d%b%Y',$fecha_esp);
$buscados = array("á", "é", "í", "ó", "ú", "ñ");
$reemplazos = array ("a", "e", "i", "o", "u", "n");
$date = str_replace($buscados, $reemplazos, $cadena);

O como lo hago?
  #7 (permalink)  
Antiguo 30/03/2011, 11:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Fecha Setlocale es_ES caracteres con acento

Mira yo lo logré de esta forma
Código PHP:
Ver original
  1. <?php
  2. $str = 'á é í ó ú ñ áéíóúñ';
  3. $search = array('á','é','í','ó','ú','ñ');
  4. $replace = array('a','e','i','o','u','n');
  5. echo str_replace($search, $replace, $str);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 30/03/2011, 12:41
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Fecha Setlocale es_ES caracteres con acento

En qué parte de la función debo colocar ese código?
  #9 (permalink)  
Antiguo 30/03/2011, 22:24
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Fecha Setlocale es_ES caracteres con acento

Cambié mi función a:

<?php
class Destination {
var $filename;

function Destination($filename) {
$this->set_filename($filename);
}

function filename_escape($filename) {
$vocalti = array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú");
$vocales = array ("a","e","i","o","u","A","E","I","O","U");
return str_replace($vocalti, $vocales,$filename);}

function get_filename() { return empty($this->filename) ? OUTPUT_DEFAULT_NAME : $this->filename; }

function process($filename, $content_type) {
die("Oops. Inoverridden 'process' method called in ".get_class($this));
}

function set_filename($filename) { $this->filename = $filename; }
}
?>

Ahora obtengo "É" en lugar del "_", originalmente MI_ -> MIÉ, quiero que salga MIE
  #10 (permalink)  
Antiguo 31/03/2011, 02:22
Avatar de SaveSolutions  
Fecha de Ingreso: agosto-2009
Ubicación: El Salvador
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Fecha Setlocale es_ES caracteres con acento

Ya encontré cómo resolverlo, por lo menos de momento. Espero que le sirva al que esté en la misma situación:

setlocale(LC_TIME, 'es_ES.ISO-8859-1');
$invoice_date = $invoice['date'];
$correct_date = str_replace("/","-",$invoice_date);
$fecha_esp = strtotime($correct_date);
$dateutf = iconv("ISO-8859-1","UTF-8",strftime('%a%d%b%Y',$fecha_esp));
$minusc = array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú");
$mayusc = array("a","e","i","o","u","A","E","I","O","U");
$date = str_replace($minusc,$mayusc,$dateutf);
  #11 (permalink)  
Antiguo 15/02/2012, 06:51
 
Fecha de Ingreso: junio-2009
Mensajes: 9
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Fecha Setlocale es_ES caracteres con acento

Hola:

setlocale(LC_TIME,'spanish');
$dateutf = strftime("%A, %d de %B de %Y");
$dateutf = ucfirst(iconv("ISO-8859-1","UTF-8",$dateutf));
echo $dateutf;

Un saludo a tod@s
  #12 (permalink)  
Antiguo 08/03/2014, 17:05
 
Fecha de Ingreso: marzo-2014
Mensajes: 1
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Fecha Setlocale es_ES caracteres con acento

A mi con lo que indicó luis010182 me anduvo perfecto, antes no me mostraba los acentos:


Código:
setlocale(LC_TIME, 'es_ES.UTF-8');
$fecha = strftime("%A %d de %B del %Y");
y me muestra:

sábado 08 de marzo del 2014

Etiquetas: caracteres, fecha, setlocale, acentos
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 22:01.