Voici une petite fonction qui m’a été bien utile pour raccourcir une URL en utilisant l’API de Bit.ly et la classe SimpleXML (disponible dans PHP 5).

function shorten($url, $bitly_login, $bitly_apiKey)
{
	//bit.ly defaults
	$bitly_version 	= '2.0.1';
	$bitly_history	= 1;
	//url à interroger pour le retour via XML
	$connectURL = 'http://api.bit.ly/shorten?version='.$bitly_version.'&longUrl='.$url.'&login='.$bitly_login.'&apiKey='.$bitly_apiKey.'&history='.$bitly_history.'&format=xml&callback=?';

	//lire le contenu retourné par l'URL
	$content = file_get_contents($connectURL);
	if ($content !== false) {
		//créer l'object avec SimpleXML (PHP 5)
		$bitly = new SimpleXMLElement($content);
		//s'assurer qu'il n'y a pas d'erreur
		if($bitly->errorCode == 0)
			return $bitly->results[0]->nodeKeyVal->shortUrl;
	}
	return >false;
}

Suffit donc de l’appeler de cette manière :

//vos infos bit.ly
$bitly_login = 'username';
$bitly_apiKey = 'R_1234567898765432123456789';
//appel de la fonction
$shorten = shorten('http://estrade.ca', $bitly_login, $bitly_apiKey);
//retourner l'url raccourcie
echo $shorten;

Commentaires Facebook

1 Tweet

6 commentaires pour “Raccourcir une URL avec l’API de Bit.ly en PHP”

  • [...] une petite astuce qui vient bien compléter mon script pour raccourcir une URL avec l’API de [...]

  • Ah! J’en revient pas, je viens de passer 40 minutes à chercher une solution sur le Web anglophone et j’ai trouvé celle-ci sur un Blog francophone que je visite occasionnellement.

    Faudrait juste enlever le « > » de « return >false; », mais c’est un détail.

    Merci beaucoup pour cette fonction Émile, le tout s’exécute très rapidement.

  • Je viens d’écrire un petit bout de code qui a pour effet d’ajouter le lien bit.ly à chaque billet WordPress (dans le meta; i.e. à côté du nom des catégories, tags, etc.). J’ignore si c’est la méthode la plus efficace, mais ça marche très bien et c’est rapide.

    Le problème est que si vous ajoutez la *deuxième* partie de bout de code d’Émile dans le meta, ça risque de réduire le temps de chargement de chaque billet de quelques secondes. Donc si vous avez plusieurs billets sur votre page principale, c’est pas très efficace (quoique je ne blâme personne et surtout pas Émile, c’était peut-être pas le but de son code).

    Ce que vous devez faire:

    1. Copier/coller la fonction « shorten » d’Émile dans votre « function.php ».

    2. Ajouter ceci dans le « index.php » de votre thème, dans le meta:


    <a target="_blank" rel="nofollow" href="http://twitter.com/home?status=Allez voir ceci! :
    ID, bitly, true);

    if($bitlycf==""){
    $shorten = shorten(get_permalink($id), 'votrePseudo', 'votreClefAPI');
    add_post_meta($post->ID, "bitly", "true", true);
    add_post_meta($post->ID, "bitlyurl", $shorten, true);
    echo get_permalink($id);
    }else if($bitlycf=="true"){
    $bitlyfinal = get_post_meta($post->ID, bitlyurl, true);
    echo $bitlyfinal;
    }else{
    echo "Erreur.";
    }
    ?>
    [ via VotreSite.com ]" title="Tweet ça!" target="_blank">Tweetez ceci!

    N’oubliez pas de changer « votrePseudo », « votreClefAPI » et « VotreSite.com » pour vos informations personnelles.

    C’est super simple. Si Émile ou un programmeur voit ceci, qu’il se sente libre de le modifier ou de me corriger.

  • I knew it. Même en ajoutant la balise [ code ], WordPress coupe des bouts du commentaire :P

    Entre « Allez voir ceci! : » ET « if($bitlycf== »"){ … », il y a:

    [ Ouverture d'une balise PHP ]

    $bitlycf=get_post_meta($post->ID, bitly, true); # (ôtez « ID, bitly, true); » dans le dernier commentaire)

  • Héhé merci de l’info!

    En effet moi j’avais juste rédigé une partie de l’iceberg… en fait j’aurais plutôt pensé appeler ce script via JSON et générer le tout dynamiquement en javascript…

Ajouter un commentaire

Additional comments powered by BackType

Twitter @emilegirard

RSS Liens partagés

Mots-clefs

Ailleurs

Méta