Aujourd’hui, je vous présente le script basique d’utilisation de simplepie, bibliothèque PHP qui permet de parser des flux RSS.
(suite…)Catégorie : PHP
- 
		
		Utiliser MySQL et PHP avec Google Maps (2/x)Voici la suite de l’article Utiliser MySQL et PHP avec Google Maps (1/x), qui posait la problématique de la non mise à jour d’une documentation technique. (suite…)
 Pour montrer cette problématique, j’avais pris l’exemple d’une page de la documentation de Google Maps : Using MySQL and PHP with Google Maps.
- 
		
		Utiliser MySQL et PHP avec Google Maps (1/x) Cet article est le premier d’une série traitant de l’utilisation de MySQL et PHP avec Google Maps. Le but de cette série d’article est double : - Refondre certains de mes vieux articles traitant du sujet.
- Mettre une page de la documentation de Google Maps au goût du jour. Cette page étant la suivante : Using MySQL and PHP with Google Maps.
 De l’importance de la docIl est crucial de comprendre, pour chacun d’entre nous, que la documentation est importante. Elle doit être à jour, et de qualité 
 Si cette documentation contient du code, ce dernier doit être compréhensible et fonctionnel.Page à refondreJe souhaite m’inspirer grandement de la page suivante : Using MySQL and PHP with Google Maps. C’est un tutoriel permettant de relier une BDD MySQL avec une carte Google Maps. Ce tutoriel est très complet. Il est compréhensible pour ceux qui maîtrise un minimum la langue Anglaise. Au cours du tutoriel, vous avez un ensemble de script qu’il est possible de récupérer. Un des points faible de ce tutoriel, est que le code fonctionnerai sous PHP5, mais pas sur les versions plus récentes de PHP7. Il utilise, en effet, des fonctions de connexion à la BDD obsolètes (ex : mysql_connect, mysql_select_db, …). Le deuxième soucis est que le script nous fait générer du XML via PHP, format lu par le JavaScript pour afficher les marqueurs sur la Google Maps. 
 Le XML est lourd à utiliser et à lire. De plus, il existe une meilleure solution pour faire ce que je voudrais faire : le JSON.Il faut savoir que le tutoriel nous faisait utiliser la bibliothèque DOM XML pour lire les XML. 
 Parmi les 3 bibliothèques existantes en PHP permettant de faire ça, celle-ci était la plus coûteuse en ressources (source : Manipuler XML avec PHP).Si j’avais gardé le format XML pour ce tutoriel, j’aurai utilisé la meilleure bibliothèque en PHP XML : SimpleXML. C’est quoi la suite ?Le prochain article sera un script simple, qui reprend tous les points du tutoriel de Google Maps. Le script pourra être repris par tout le monde. Je ferai plus tard, un script plus développé, pouvant être amélioré facilement et rapidement. 
- 
		
		array_rand – Prendre des clés au hasard dans un tableauEn PHP, et dans les autres langages aussi, il existe les fonctions générant de l’aléatoire. 
 En premier lieux, pour ces fonctions-là, nous pensons souvent à rand et mt_rand. Elles sont les plus courantes, générant des valeurs aléatoires et nous retournant des chiffres.Il existe d’autres fonctions, basé sur l’aléatoire, mais qui ne nous retourne pas des chiffres. Je vais prendre l’exemple de array_rand. array_rand : comment ça marcheJ’ai rencontré cette fonction il n’y a pas très longtemps. 
 array_rand prend une ou plusieurs clés, au hasard dans un tableau, et retourne la ou les clés de ces valeurs.Voici un exemple de cette fonction : <?php $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); $rand_keys = array_rand($input, 2); echo $input[$rand_keys[0]] . "\n"; echo $input[$rand_keys[1]] . "\n"; ?>Ce code nous donnera en sortie, 2 des noms de personnage de la saga Matrix contenu dans le tableau. Chose importante, il faut savoir que cette fonction ne convient pas pour de la cryptographie. Un problème réelComme je disais plus haut, j’ai connu cette fonction il n’y a pas longtemps, pour la création du bot Twitter @1animalparjour. Ce bot a pour but de donner, chaque jour, une photo d’animal mignon. 
 Pour faire cela, j’ai cherché ou créé différentes API qui contenaient les photos des différents animaux.
 Les URLs des différentes API ont ensuite été mises dans un tableau PHP.$ar = [ 'https://random.dog/woof.json', 'https://randomfox.ca/floof/', 'http://randomanimal.guillaume-richard.fr/animals/bunny/', 'http://randomanimal.guillaume-richard.fr/animals/cat/', 'http://randomanimal.guillaume-richard.fr/animals/hedgehog/' ]; $rand_keys = array_rand($ar); $infos = $ar[$rand_keys]; var_dump($infos); // réponse possible : https://random.dog/woof.jsonCe code en lui-même ne sert pas à grand chose. C’est juste pour l’exemple. 
 La suite de mon script de mon bot récupère ce lien, et lit les informations qui y sont contenu.
 Je récupère le lien de l’image, télécharge cette dernière image, puis l’upload sur le fil Twitter tous les matins.Use CaseJe ne peux pas forcément montrer de réel Use Case de mon script. Comme vous pouvez le comprendre, la finalité de ce script étant l’upload d’image sur le fil Twitter. 
 Je ne peux que monter certaines des photos qui sont déjà sur ce fil Twitter.ConclusionJ’ai créé ce compte Twitter pendant mon chômage partiel. Je voulais voir ce qu’il était possible de faire dans ce cas-là. 
 Cela m’a permis d’apprendre à connaitre cette fonction, et ce qui était possible de faire avec.Il est tout à fait possible d’améliorer cette fonction, et même de la refaire complètement en quelques lignes. Je compléterai cette article quand j’aurai fait cette partie. J’espère que cette exemple vous à plus. 
- 
		
		Implode en PHPMalgré le fait que PHP soit mal aimé, il reste majoritairement utilisé pour la création de site Web. 
 Même après des années d’expériences dans ce langage, on découvre toujours de nouvelles fonctions. Dans certains cas, on les améliore pour qu’ils correspondent à nos besoins.implode : comment ça marche.A priori, 99% des développeurs PHP connaissent cette fonction, qui permet de rassembler les éléments d’un tableau en une chaîne. 
 Voici un petit exemple issu de la documentation de PHP :$array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array); echo $comma_separated; // lastname,email,phoneComme vous pouvez le voir, tous les éléments du tableau $array se regroupent dans la chaîne de caractère $comma_separated. 
 Tous les éléments de la chaîne de caractère, se retrouvent dans le même ordre que dans le tableau.Un problème réelJ’ai eu l’occasion, fin 2019, de créer un bot Twitter simple qui donne les prix d’essence les moins chères en Haute-Garonne. 
 Dans certains cas, plusieurs villes pouvaient avoir le prix le moins cher, selon le type d’essence.Comme je récupérais le nom de ces villes dans un tableau, et que je devais les ajouter dans un tweet, l’utilisation de la fonction implode était obligatoire. De plus, entre les 2 dernières villes, je ne voulais pas mettre la même séparation que les autres éléments. 
 En l’occurrence, je voulais mettre un ‘et’ à la place d’une virgule. La fonction finale donne :/** * Join a string with a natural language conjunction at the end. * @param string $glue * @param array $pieces * @param string $conjonction * @return string $str */ function implode_cjt(string $glue, array $pieces, string $conjonction = 'et'):string { $str = array_pop($pieces); if ($pieces) { $str = implode($glue, $pieces).' '.$conjonction.' ' $str; } return $str; }Comme vous pouvez remarquer, ma fonction récupère 3 paramètres : - une chaîne de caractère glue, liaison des infos du tableau.
- la tableau pieces, qui est le tableau de chaînes à rassembler.
- conjonction, qui est la liaison des 2 derniers éléments du tableau.
 La fonction est simple. - On retire d’abord le dernier élément du tableau, avec un array_pop.
- Si le tableau pieces contient encore des éléments, on les regroupe avec un implode (sans oublier notre conjonction et la valeur récupérée dans le Step 1)
 Use CaseVoici deux exemples d’utilisations de cette fonction : $villes = ["Paris", "Bordeaux", "Toulouse", "Marseille"]; $str = implode_cjt(',', $villes); echo $str; // Paris, Bordeaux, Toulouse et Marseille $villes = ["Blois", "Paris", "Toulouse", "Castres"]; $str = implode_cjt(',', $villes, 'ou'); echo $str; // Blois, Paris, Toulouse ou CastresConclusionJe voulais inaugurer ce concept d’articles avec un exemple simple. 
 J’espère que cet article vous à plus. Si vous en voulez d’autres, n’hésitez pas à me le dire.
