J’ai récemment ajouté mes derniers « tweets » (via Twitter) dans la sidebar de mon blogue. Je voulais partager mon code avec vous. Il vous faudra ceci :
- L’extension SimpleXML (compilée par défaut dans PHP 5.0)
- Cache_Lite
- PHP Markdown
- PHP Smartypants
Voici donc le code :
$file = 'http://twitter.com/statuses/user_timeline/14153719.xml?count=10';
$user = 'remiprev';
$cache_id = "twitter";
$cache_options = array(
'cacheDir' => dirname(__FILE__).'/cache/',
'lifeTime' => 300
);
require_once('Cache/Lite.php');
require_once('Markdown.php');
require_once('Smartypants.php');
$Cache_Lite = new Cache_Lite($cache_options);
if ($data = $Cache_Lite->get($cache_id)) {
print '<!-- Le contenu provient de la cache -->';
print $data;
} else {
$xml = simplexml_load_file($xml);
print '<!-- Le contenu ne provient pas de la cache -->';
$output = "";
$statuses = $xml->status;
$compteur=1;
foreach ($statuses as $status) {
$permalink = 'http://twitter.com/'.$user.'/statuses/'.$status->id;
$via = $status->source;
$date = date('j F à G:i', strtotime($status->created_at));
$contenu = $status->text;
// on ajoute des liens automatiques
$contenu = preg_replace('/(http:\/\/[^\s]+)/','<a href="\\1">\\1</a>', $contenu);
// on le passe au Markdown-inator!
$contenu = Smartypants($contenu);
$contenu = Markdown($contenu);
$contenu = str_replace('<p>','', $contenu); // on ne veut pas paragraphes!
$contenu = str_replace('</p>','', $contenu);
// on ajoute des liens sur les @replies
$contenu = preg_replace('/\@([^\s\:\.\;\-]+)/','@<a href="http://twitter.com/\\1">\\1</a>', $contenu);
$output .= '<div class="else post'.(($compteur==1)?' premier':'').'"><p><a href="'.$permalink.'"><span class="date">'.$date.'</span></a><span class="content"> '.($contenu).'<em class="from"> via '.$via.'</em></span></p></div>'."\n";
$compteur++;
}
$Cache_Lite->save($output);
print $output;
}
Vous pouvez le copier, le modifier et l’utiliser — gratuitement!
P.S. - De grâce, modifier le code HTML généré! J’utilise un DIV car je voulais obtenir le même style que mes billets, mais je devrais utiliser une UL ou une DL.
Aucun commentaire n'a été posté pour ce billet.