Foros del Web » Programando para Internet » PHP »

Problemas (iconv + strftime)

Estas en el tema de Problemas (iconv + strftime) en el foro de PHP en Foros del Web. Buenas a todos, Hace un rato que estoy intentando solventar el problema.. pero vamos, que no hay manera.. si alguien es amable de decirme donde ...
  #1 (permalink)  
Antiguo 30/08/2010, 14:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Problemas (iconv + strftime)

Buenas a todos,

Hace un rato que estoy intentando solventar el problema.. pero vamos, que no hay manera.. si alguien es amable de decirme donde me estoy equivocando me vendría de perlas.. >,<, aquí el código:

Código PHP:
<?php 
    
    
class RssReader 
        var 
$url
        var 
$data
        
        function 
RssReader ($url){ 
            
$this->url
            
$this->data implode (""file ($url)); 
        } 
        
        function 
get_items (){ 
            
preg_match_all ("/<item .*>.*<\/item>/xsmUi"$this->data$matches); 
            
$items = array (); 
            foreach (
$matches[0] as $match){ 
                
$items[] = new RssItem ($match); 
            } 
            return 
$items
        } 
    } 
    
    class 
RssItem 
        var 
$title$url$description$pubdate
        
        function 
RssItem ($xml){ 
            
$this->populate ($xml); 
        } 
        
        function 
populate ($xml){ 
            
preg_match ("/<title> (.*) <\/title>/xsmUi"$xml$matches); 
            
$this->title $matches[1]; 
            
preg_match ("/<link> (.*) <\/link>/xsmUi"$xml$matches); 
            
$this->url $matches[1]; 
            
preg_match ("/<pubDate> (.*) <\/pubDate>/xsmUi"$xml$matches); 
            
$this->pubdate $matches[1]; 
    } 
    
    function 
get_title (){ 
            return 
iconv('UTF-8''ISO-8859-1'$this->title);
        } 
    
        function 
get_url (){ 
            return 
$this->url
        } 
        
        function 
get_description (){ 
            return 
$this->description
        } 
        
        function 
get_pubdate (){
            return 
iconv('UTF-8''UTF-8'strftime('%d/%m/%Y'$this->pubdate));
        }
    } 

$rss = new RssReader ("http://forums.wowtemplars.es/es/index.php?app=core&module=global&section=rss&type=forums&id=2"); 
    
    foreach (
$rss->get_items () as $item){ 
        
printf ('<tr class="hilite"><td style="width: 30px;" align="center"><img class="postImg" src="http://www.wowtemplars.es/extra/imagenes/new-hp/icons/0.gif" /></td><td style="width: 350px;"><div class="hdl"><h3><a href="%s" target="_blank">%s</a></h3><span class="author">&nbsp;</span></div><span class="news-plusLink"><a href="%s" target="_blank"></a></span></td><td style="width: 77px;" align="center"><span class="date"><small>%s</small></span></td></tr>'
        
$item->get_url (), $item->get_title (), $item->get_url (), $item->get_pubdate ()); 
    }
?>
El error está en esta línea en concreto: "return iconv('UTF-8', 'UTF-8', strftime('%d/%m/%Y', $this->pubdate));" devuelve un Warning: strftime() expects parameter 2 to be long, string given in xxx on line 53, y la fecha no se muestra.

Saludos
  #2 (permalink)  
Antiguo 30/08/2010, 19:26
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Problemas (iconv + strftime)

Hola,

El problema es que pubdate no es numérico sino que, según el estándar, es Y-m-d H:i:s. Deberías pasar pubdate primero por strtotime.

Saludos!
  #3 (permalink)  
Antiguo 31/08/2010, 08:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problemas (iconv + strftime)

¿Una pequeña ayudita de como hacerlo? >.<,
  #4 (permalink)  
Antiguo 31/08/2010, 08:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Problemas (iconv + strftime)

El error te dice claramente que está esperando un valor tipo numérico y lo que estás colocando es un valor de texto. El segundo parámetro solo espera números. Haz un var_dump a la variable $this->pubdate para que veas que te está trayendo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 31/08/2010, 10:05
 
Fecha de Ingreso: agosto-2010
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problemas (iconv + strftime)

Lo que devuelve ya lo sé, es una cadena como "Mon, 30 Aug 2010 18:11:15 +0000", pero la cosa está en que quiero convertirlo a "30/08/2010" pero vamos que con el codigo que puse en #1 no funciona :S
  #6 (permalink)  
Antiguo 01/09/2010, 00:21
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Problemas (iconv + strftime)

Hola,

Como te decía, debes usar la función strtotime() antes que strftime() para convertir el string que sale de la db a marca de tiempo (integer) porque, como bien te dijimos ambos, la función espera un número y no un string.

Código PHP:
strftime('%d/%m/%Y'strtotime($this->pubdate)) 
Saludos

Etiquetas: Ninguno
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 10:01.