Se connecter / S'enregistrer
Votre question

[RESOLU][php] preg_replace, applicatoin de la regex plusieur fois !

Tags :
  • regexp
  • Php
  • preg_replace
  • Echo
  • Programmation
Dernière réponse : dans Programmation
a b L Programmation
23 Février 2012 17:13:12

Bonjour a tous,

Sur mon site j'affiche les dernier tweete du compte associer ...
Mais je cherche a rendre les lien cliquable, et a colorer les tag !

Voila le code actuel !
  1. <?php
  2. $nb_tweets = 5;
  3. $login = 'Ploofeu';
  4. $data = file_get_contents('http://www.twitter.com/statuses/user_timeline.json?screen_name='.$login.'&count='.$nb_tweets);
  5. $tweets = json_decode($data);
  6.  
  7. foreach ($tweets as $status)
  8. {
  9. $message = $status->text;
  10.  
  11. $message = preg_replace("#^@+\w+#",
  12. "<span style='color:#06F'>$0</span>", $message);
  13.  
  14. echo '<div id="message">'.$message.'</div>';
  15. echo '<div id="date">Le : '.date("d/m/y à H:i",strtotime($status->created_at)).".</div><hr>";
  16. }
  17. ?>


Le problème est que cela ne s'applique qu'a la premier occurrence qui passe la regex ! ex : http://ploof.eu/zipk
Comment faire pour que cela s'applique sur tous le message ?
( Le temps d'avoir une reponse je vais préparer les autre regex ) !

Autres pages sur : resolu php preg replace applicatoin regex plusieur fois

a b L Programmation
23 Février 2012 17:35:19

  1. <?php
  2. $nb_tweets = 5;
  3. $login = 'Ploofeu';
  4. $data = file_get_contents('http://www.twitter.com/statuses/user_timeline.json?screen_name='.$login.'&count='.$nb_tweets);
  5. $tweets = json_decode($data);
  6.  
  7. foreach ($tweets as $status)
  8. {
  9. $message = $status->text;
  10. $detec = array("#(@|\#)+\w+#","#http://[a-z0-9._/-]+#i");
  11. $replace = array("<span style='color:#06F'>$0</span>","<a href='$0' target='_blank' >$0</a>");
  12.  
  13.  
  14. $message = preg_replace($detec, $replace, $message);
  15.  
  16.  
  17. echo '<div id="message">'.$message.'</div>';
  18. echo '<div id="date">Le : '.date("d/m/y à H:i",strtotime($status->created_at)).".</div><hr>";
  19. }
  20. ?>


voila le code final qui marche !
en fais cela venais du ^
a c 232 L Programmation
23 Février 2012 18:33:41

Hello,

Le ^ indique que ça doit être au début de la chaine ;) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS