2009-07-07 6 views
1

J'utilise le script ci-dessous pour afficher mon statut twitter, mais j'aimerais ajouter l'option de ne pas afficher les tweets commençant par un @username. Je l'ai fait afin qu'il n'affiche pas mon nom d'utilisateur, mais ne souhaite pas afficher les tweets répondus à un autre utilisateur.Ajout au script d'état php twitter

Merci

$doc = new DOMDocument(); 
# load the RSS 
if($doc->load('twitterurlrss')) { 
    # number of tweets to display. 20 is the maximum $max_tweets = 3;  
    $i = 1; 
    foreach($doc->getElementsByTagName('item') as $node) { 
     # fetch the title from the RSS feed 
     $tweet = $node->getElementsByTagName('title')->item(0)->nodeValue; 
     $date = $node->getElementsByTagName('pubDate')->item(0)->nodeValue; 
     $link = $node->getElementsByTagName('link')->item(0)->nodeValue; 
     # the title of each tweet starts with "username: " which I want to remove 
     $tweet = substr($tweet, stripos($tweet, ':') + 1); 
     $date = date("dS F Y", strtotime($date)); 
     # Turn URLs into links 
     $tweet = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $tweet); 
     # Turn @replies into links 
     $tweet = preg_replace("/@([0-9a-zA-Z]+)/", "<a href=\"twitterurl/$1\">@$1</a>", $tweet); 
     # Turn & into &amp; 
     $tweet = preg_replace('@&@', '&amp;', $tweet); 
     if($i%2 == 0) { 
      echo "<div class=\"three-col center\"><p>" . $tweet . "<br /><span class=\"quiet\"><ahref=\"" . $link . "\">". $date . "</a></span></p></div>\n"; 
     } else { 
      echo "<div class=\"three-col\"><p>" . $tweet . "<br /><span class=\"quiet\"><ahref=\"" . $link . "\">" . $date . "</a></span></p></div>\n"; 
     } 
     if($i++ >= $max_tweets) 
      break; 
    } 
} 

(j'ai essayé de dissimuler les hyperliens ne peut pas afficher plus d'un)

+0

Merci chaos, pour l'édition du post. –

+0

Pour info, si ma réponse a résolu votre problème, il est approprié de l'accepter (cliquez sur l'icône de la case à cocher). :) – chaos

Répondre

2

Sons comme vous voulez ajouter une condition comme celui-ci:

if(preg_match('/^\s*@([0-9a-zA-Z]+)/', $tweet)) 
    continue; 

après $tweet = substr($tweet, stripos($tweet, ':') + 1);.

+0

Merci le chaos (à nouveau), pour la réponse rapide et la résolution de ma question. –

+0

De rien. :) – chaos

0
if(preg_match('/(|\s)@([0-9a-zA-Z]{3,})/', $tweet)) 
    continue; 

Une correspondance plus complète. L'autre ne correspondra pas correctement dans certains cas.