Le filtre « J’ai de la chance ! » II

Voici une évolution du filtre j’ai de la chance pour spip qui, ma foi, rend la contrib pour le moins indispensable.

Je réexplique la fonctionnalité pour ceux qui n’auraient pas encore compris. C’est un filtre de contenu auquel correspond un nouveau raccourci : [!quelque chose]

Ex : quand j’écris [!spip] dans un article, il est transformé en un lien qui renvoie vers http://www.spip.net

Cà évite de taper l’url en entier chaque fois qu’on en a besoin.

Comment çà marche ? C’est tout simple, j’utilise la fonction « J’ai de la chance » de Google [1].

Ce qui fait que si j’écrit [!spip], cela produit l’url http://www.google.fr/search?hl=fr&q=spip&btnI= [2] qui redirige automatiquement vers le site de spip.

Quoi de neuf dans la version II ? Et bien maintenant plutôt que d’avoir http://www.google.fr/search?hl=fr&q=spip&btnI= dans votre article, maintenant vous avez la vraie url, soit http://www.spip.net.

Pour ce faire, j’ai utilisé la fonction de Metin Arman qui permet de renvoyer l’ultime redirection produite par une url.

Pas mal non ?

Mais on peut s’en servir pour d’autres utilisations. Exemple, un glossaire par mot clé synonyme, c’est à dire dont le mot clé n’est pas défini dans la base.

Si je créé ce raccourci wikipedia [?Appliquette] ( ex : Appliquette), Wikipedia renvoie sur le moteur de recherche car aucun lien n’a été défini pour ce mot. On voit d’ailleurs dans les résultats que le premier est le bon : applet.

On va modifier le code ci-dessous pour que le raccourci renvoie directement sur la page pour applet. C’est simple, il suffit d’ajouter dans la requête de google (le paramètre q de l’url) :

site:fr.wikipedia.org

Ce qui donne :

        return preg_replace('@\[\!(.+?)\]@e', "'<a class=\"spip_out\" href=\"'.getLocation('www.google.fr', '/search?hl=fr&q='.urlencode('\\1').'+site%3Afr.wikipedia.org&btnI=').'\">\\1</a>'", $texte);

On pourrait même utiliser plusieurs glossaires et renvoyer la définition de celui qui est le plus pertinent pour le mot clé !

Pour installer ce filtre dans votre site SPIP, éditez le ficher ecrire/mes_options.php3 et insérez les lignes suivantes :

/*
 *   +----------------------------------+
 *    Nom du Filtre :    J'ai de la chance II
 *   +----------------------------------+
 *    Date : mercredi 12 septembre 2006
 *    Auteur :  Balluche      + balluche PtJ free.fr                                      
 *   +-------------------------------------+
 *    Fonctions de ce filtre :
 *     Appelle la fonction "J'ai de la chance" de Google sur un mot clé
 *   +-------------------------------------+ 
 *  
 * Pour toute suggestion, remarque, proposition d'ajout
 * reportez-vous au forum de l'article :
 * http://balluche.free.fr/?992/Le-filtre-J-ai-de-la-chance-II
*/

//author : Metin Arman on 27/01/2002 for zend forums
//url : http://www.zend.com/phorum/read.php?num=3&id=14652&thread=14626
function getLocation($host, $path ='/')
{
	$http_ver = '1.0'; // version 1.0 ar 1.1
	$fp = fsockopen ($host, 80, $err_no, $err_str, 30);
	if (!$fp) {
		echo "ERROR: $err_str ($err_no)<br>\n";
	}
	else {
		if ($http_ver == '1.0') {
			fputs ($fp, "GET ".$path." HTTP/1.0\r\n\r\n");
		}
		else {
			fputs ($fp, "GET ".$path." HTTP/1.1\r\nHost:".$host."\r\n\r\n");
		}
		while (!feof ($fp)) {
			$line = fgets($fp, 4096);
			if (eregi("location:", $line)) {
				$headers_tmp = split(" ", $line, 2);
				$location = trim($headers_tmp[1]);
				break;
			}
			else {
				$location = 0;
			}
		}
		fclose ($fp);
	}
	return $location;
}

//balluche:24/02/2006:Appelle la fonction "J'ai de la chance" de Google sur un mot clé
//12/07/2006:j'utilise la fonction de Metin Arman pour récupérer l'url finale
function chance($texte)
{
	return preg_replace('@\[\!(.+?)\]@e', "'<a class=\"spip_out\" href=\"'.getLocation('www.google.fr', '/search?hl=fr&q='.urlencode('\\1').'&btnI=').'\">\\1</a>'", $texte);
}

//si cette fonction existe déjà, il faut insérer les lignes avant le return
function avant_propre($texte) {
   $texte = chance($texte);
   return $texte;
}

// FIN du Filtre chance
?>

Notes

[1Voir le bouton en page d’accueil

[2Cliquez pour voir.

Dernière modification de cette page le 4 juin 2007

Discussion

Aucune discussion

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom