Bonsoir,
Je viens d'afficher avec OAuth for Twitter's REST API mes derniers tweets sur mon site.
Je voulais savoir s'il était facilement possible de rendre les liens dans ces tweets cliaquables.
Merci d'avance,
Djokx.
Bonjour,
J'ai peut-être la solution à ton problème :
$tweet = 'Un tweet contenant un lien http://t.co/blababla etc...';
$regexp = "/\b((?:[a-z]\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}.]|[a-z0-9.\-]+.][a-z]{2,4}\/)(?:^\s()<>]+|\((^\s()<>]+|(\(^\s()<>]+\)))*\))+(?:\((^\s()<>]+|(\(^\s()<>]+\)))*\)|^\s`!()\\]{};:'\".,<>???????]))/i";
$tweet = preg_replace($regexp, '<a href="$1" target="_blank">$1</a>', $tweet);
Dis-moi si cela convient,
(Si oui pense aussi à valider la réponse ;))
Shadow
Bump!
je viens de voir que c'était bien possible sur les dernier tweet de @grafikart_fr :)
Merci.
Merci beaucoup, c'est exactement ce qu'il me fallait, la regexp parfaite!
Bonne semaine à toi. :)
Mais je t'en pris ;)
Pour la petite explication de la regexp (oui je ne l'ai pas faite de tête... mais j'aurais bien voulu :D lol) : An Improved Liberal, Accurate Regex Pattern for Matching URLs
Bonne semaine à toi aussi et bonne continuation ;),
Shadow
Je l'ai fait comme ça perso :
<?php
function parseTweet($text) {
$text = preg_replace('#http://[a-z0-9._/-]+#i', '<a target="_blank" href="$0">$0</a>', $text); //Liens
$text = preg_replace('#@([a-z0-9_]+)#i', '<a target="_blank" href="http://twitter.com/$1">@$1</a>', $text); //Pseudos
$text = preg_replace('# \#([a-z0-9_-]+)#i', ' <a target="_blank" href="http://search.twitter.com/search?q=%23$1">#$1</a>', $text); //Hashtags
$text = preg_replace('#https://[a-z0-9._/-]+#i', '<a target="_blank" href="$0">$0</a>', $text); //Liens
return $text;
}
?>
Et après, lorsque tu appelles ton texte :
<ul>
<?php foreach ($tweets as $k => $tweet): ?>
<li><?php echo parseTweet($tweet->text); ?></li>
<?php endforeach ?>
</ul>
Ca marchera avec les Hashtags, les pseudos et les liens.
Exemple :
Bonjour shadow à quelle endroit je doit copier ce code ?
$tweet = 'Un tweet contenant un lien http://t.co/blababla etc...';
$regexp = "/\b((?:[a-z]\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}.]|[a-z0-9.\-]+.][a-z]{2,4}\/)(?:^\s()<>]+|\((^\s()<>]+|(\(^\s()<>]+\)))*\))+(?:\((^\s()<>]+|(\(^\s()<>]+\)))*\)|^\s`!()\\]{};:'\".,<>???????]))/i";
$tweet = preg_replace($regexp, '<a href="$1" target="_blank">$1</a>', $tweet);