2010-10-12 5 views
0

Ceci est le code que j'utilise, mais il retourne vide dans la plupart des cas.Essayer de montrer mes abonnés Twitter comptent sur mon site Web sans aucune chance

<?php 
$xml=file_get_contents('http://twitter.com/users/show.xml?screen_name=MyTwitterUsernameBla'); 
if (preg_match('/followers_count>(.*)</',$xml,$match)!=0) { 
$count = $match[1]; 
} 
echo $count; 
?> 

Je veux montrer adeptes de Twitter comptent de manière simple, pas plugins..it est un site Web, et non un blog.

Merci beaucoup :)

Répondre

2

Si cela fonctionne sur votre hôte local mais pas sur votre hôte public, il est probable que Twitter bloque ou limite l'adresse IP de votre serveur public. De nombreux hôtes partagés sont bloqués/limités parce qu'il y a plusieurs sites qui claquent sur l'API Twitter sans authentification. Twitter les considère comme une seule application et étrangle la propriété intellectuelle dans son ensemble. Pour contourner cela, vous devrez vous authentifier en utilisant oAuth. C'est une douleur dans le cul, mais c'est une étape nécessaire. Voici quelques ressources que vous pourriez trouver être à portée de main:

Twitter vous offre des informations d'identification dans la section "Vos applications" du Twitter Developer website. Une fois que vous avez enregistré votre site en tant qu'application, cliquez sur Mon jeton d'accès. Cela vous donnera une clé/jeton que vous pouvez utiliser pour authentifier avec succès.


Une autre idée est que Twitter étrangle tout simplement votre application. Si c'est le cas, c'est parce que vous avez trop de trafic et que vous ne mettez pas en cache les résultats de l'API. Mettez en cache les résultats de l'API, par exemple, une heure avant d'aller chercher une nouvelle copie. Twitter cessera de vous singulariser si vous faites cela.

if(filemtime("cache.xml") < (int)$_SERVER["REQUEST_TIME"] - 3600) { 
    $data = file_get_contents("http://twitter.com/users/show.xml?screen_name=username"); 
    file_put_contents("cache.xml", $data); 
} else 
    $data = file_get_contents("cache.xml"); 
+0

Incroyablement utile! La chose cache fait l'astuce .. J'ai cherché sur le web tout pour une solution simple comme ça .. :) –

0

Il est beaucoup mieux (plus fiable et plus facile à entretenir) d'utiliser un analyseur XML que d'essayer de chercher des bits avec des expressions régulières.

simplement:

$xml = new SimpleXMLElement('http://twitter.com/users/show.xml?screen_name=username', null, true); 

echo $xml->followers_count; 
+0

Ce code fonctionne sur localhost, mais pas sur mon hôte public. Ce qui pourrait être désactivé sur l'hôte et le refuse de travailler s'il vous plaît? –

+0

Probablement allow_url_fopen - http://uk.php.net/manual/fr/filesystem.configuration.php#ini.allow-url-fopen - essayez d'activer toutes les erreurs (error_reporting (E_ALL)) pour obtenir un message d'erreur, ou vous Je vais faire un débogage aveugle –

+0

Je l'ai fait. Aucune erreur ne s'affiche, juste vide .. :( –

1

Vous pensez que votre reg. exp. est trop gourmand .. croire va tout correspondre jusqu'au dernier '< /'

essayer quelque chose comme un match non gourmand:

/followers_count>(.*?)</ 

ou tout sauf correspondent '<':

/followers_count>([^<]*)</ 

L'analyse XML peut être plus simple, et si vous voulez extraire beaucoup du XML, plus "correct". Mais semble être exagéré dans votre cas.

+0

J'ai essayé la méthode XML. Il n'analyse rien non plus sur le serveur web. Sur localhost tout va bien .. C'est bizarre, j'ai vérifié si l'analyseur xml est chargé et oui c'est. Ce qui pourrait être que –

+0

Voir mon commentaire sur mon poste. Comme les deux méthodes fonctionnent localement, je suppose que allow_url_fopen sur l'hôte distant est désactivé. Vous devez activer le rapport d'erreurs pour déboguer. –

Questions connexes