<?php 
function l($message '')
{
    echo 
$messagePHP_EOL;
}

function 
saveImage($url)
{
    
$content file_get_contents($url);
    
$filename __DIR__.'/images/picture-'.uniqid(md5($url)).'.'.pathinfo($urlPATHINFO_EXTENSION);
    
l('saving '.$filename);
    
file_put_contents($filename$content);
    
l(str_repeat('.'strlen($filename)).' saved');

    return 
basename($filename);
}

function 
loadContent($url
{
    
$html =  html_entity_decode(file_get_contents($url), ENT_COMPAT'UTF-8');

    
preg_match('#<div class="articleText">(.*?)</div><!-- end class="articleText" -->#sim'$html$out);
    
    if (!isset(
$out['1']))
    {
        return 
'';
    }

    
$html $out[1];

    return (string)
$html;
}

$source simplexml_load_file('http://rss.lemonde.fr/c/205/f/3050/index.rss');
$result = array();

$index 0;
foreach (
$source->channel->item as $item)
{
    
l();
    
$title html_entity_decode((string)$item->titleENT_COMPAT'UTF-8');
    
l($title);

    
$result[++$index] = array(
        
'id' => $index,
        
'title' => $title,
        
'content' => loadContent(preg_replace('#^http://www\.#i''http://mobile.', (string)$item->link)),
        
'image' => isset($item->enclosure) ? saveImage((string)$item->enclosure['url']) : '',
        
'date' => new DateTime((string)$item->pubDate)
    );
}

file_put_contents(__DIR__.'/feed.cache'serialize($result));
l(sprintf('%d articles saved.'sizeof($result)));