Générer un sommaire en PHP

J’ai eu besoin ce matin pour un projet pro de générer un sommaire (aussi appelé TOC en anglais) pour certaines pages.

J’avais donc le choix entre deux langages : JavaScript côté client (ce qui implique une latence et impose des ressources en plus au client qu’il devra télécharger) ou PHP côté serveur.

Préférant un site léger pour l’utilisateur, je suis donc parti sur PHP. Problème : les codes dispos sur le Net ne fonctionnent souvent que pour un seul niveau de titres ou traitent une page complète (et non partielle) pour y injecter le TOC (hors j’ai besoin de l’afficher autre part).

En fait le contenu des pages est obtenu à partir de simples fichiers MarkDown transformés en HTML (avec un système de cache) que je peux ensuite parser pour obtenir un DOM via les lignes suivantes :

Ce code me permettait déjà de récupérer le premier <h1> pour l’utiliser en tant que titre de la page. J’avais donc déjà ce qu’il fallait pour récupérer une architecture.

Le code suivant permet donc de récupérer un bout de HTML (une liste) correspondant au sommaire, tout en créant les ancres (via de simples id HTML) nécessaires :

À noter que certaines fonctions nécessitent d’être définie à l’avance (CodeIgniter les fourni, votre framework préféré a sans doute des équivalents) : url_title permet d’obtenir une version utilisable dans l’URL (pratique pour obtenir une ancre lisible), xss_clean filtre tout simplement la chaîne pour éviter les failles XSS (au pire un bête htmlentities fera l’affaire).

Il suffit ensuite d’utiliser la fonction en lui fournissant le DOM à parcourir et de récupérer le nouveau HTML (celui avec les ancres) :

Nous sommes tous Charlie

Liste des victimes de l'attentat contre Charlie Hebdo

Depuis longtemps la France va mal. Depuis hier la France a mal.

Plus j’y pense et moins je trouve les mots pour décrire cet acte lâche et écœurant.

Et là, je tombe sur un tweet de notre Marine nationale :

Et ce n’est pas parce que j’ai sauté le petit déjeuner que le vomi remonte, non.

Tout simplement parce vouloir tuer un autre Homme que soi c’est perdre son humanité. Cette blondasse n’est plus qu’un animal sauvage incapable de vivre en société, un prédateur vil et dangereux. Du genre qu’il faut mettre en cage avant qu’il ne soit trop tard. Comme ceux qui ont attaqué Charlie Hebdo hier. Après tout, ils sont de la même espèce. La même que nous, il paraît.

Enfin bref, à la base j’étais parti pour parler de ces terroristes, ces malades mentaux déconnectés de la réalité qui se croient investis d’une mission divine. Des mégalomanes, en somme.

Mais quand je vois des politiciens, ces incapables, ces incompétents sauter sur l’occasion pour se faire de la pub et orienter le débat au détriment du respect le plus élémentaire, j’ai honte de notre pays, j’ai honte que ces gens servent d’exemples à notre pays.

Quintus : Tutoriel déplacé

Petite mise à jour concernant le tutoriel sur Quintus : il ne sera bientôt plus disponible ici.

Avec l’arrivée de Zeste de Savoir, j’ai décidé de le ré-écrire et de le terminer sur cette plateforme. Vous pourrez donc le retrouver là-bas, sachant qu’il est beaucoup plus détaillé (donc plus accessible) et qu’il y a de nouveaux contenus ainsi qu’un fil rouge : créer un jeu de plateforme de A à Z.

Pour l’instant il est en attente de validation pour les 3 premières parties qui sont en bêta en attendant. Une 4e partie devrait suivre, une fois que je l’aurai rédigée.

Si vous voulez déjà avoir un aperçu du résultat, sachez que j’ai mis en ligne une démo. Le code est bien entendu lisible et surtout disponible sur GitHub.

La politique de l’incompétence

Aujourd’hui j’ai envie de parler de politique, pour changer. Pourquoi ? Parce que c’est un sujet qui revient souvent en ce moment, mais surtout parce que ça a souvent le don de m’énerver.

Non pas que je n’aime pas la politique ou que je trouve cela inutile. Non. Mais plutôt parce que les gens préfèrent voter pour des incompétents que de demander à des gens compétents de rendre un grand service à l’État.

Prenons un exemple tout bête. Dans une entreprise, admettons que vous ayez besoin d’un comptable. Vous allez demander à tout le monde — peu importe les qualifications — qui veut le poste (parce qu’il paie bien, il faut avouer) et choisir celui avec qui le feeling passe le mieux ? Ou vous allez demander aux personnes compétentes de se proposer et vous allez choisir celui qui a les meilleures qualifications (comme un diplôme et de l’expérience concrète dans le domaine) pour le poste, même s’il ne sera probablement jamais votre pote ?

C’est un peu l’impression que j’ai de la politique actuelle, du moins en France : tout le monde veut le pouvoir (c’est vrai quoi, comme l’a dit Tony Montana, quand t’as le pouvoir…), du coup tout le monde essaie de se faire pleins de copains en espérant arriver numéro un (après tout, c’est mieux que de perdre 280 000 euros quand on atteint pas les 5%). Sauf qu’au final on se retrouve avec une bande de copains au pouvoir, des gens loin d’être compétents qui se contentent d’agir comme bon leur semble (ou plutôt comme leurs gentils sponsors officieux le leur demandent).

Et après ça on s’étonne que le gouvernement soit remplis d’incapables qui prennent des décisions à la con et que le peuple se révolte. Et si pour une fois on prenait le problème à la source et qu’on sélectionnait les candidats en fonction de leurs compétences plutôt que des affinités qu’on leur porte ?

Parce qu’après tout, demander à un copain de devenir ton patron, c’est un peu te tirer une balle dans le pied…

Les styleguides ont été créées par les nazis

Tout à l’heure j’ai vu un lien vers cette page sur Google+ (comme quoi, y’a encore des gens dessus). Cette page, donc, présente des styleguides pour rédiger du HTML/CSS flexible, durable et maintenable (c’est l’auteur qui le dit).

Le premier problème c’est que l’auteur, un ancien de chez Twitter qui bosse actuellement sur Bootstrap, propose d’utiliser une balise meta invalide qui équivaut à un entête HTTP. Bah oui, pourquoi mettre les infos dans les entêtes HTTP quand on peut foutre en l’air son HTML en l’alourdissant au passage ?

Enfin… bref. (coucou Franklin !)

Dans le lot il y a de bonnes idées, c’est sûr, et ça part sûrement d’un bon sentiment. Mais il y a quand même un gros truc qui me dérange : est-ce qu’on demande aux enfant d’écrire avec un style identique à l’école ? Est-ce qu’ils doivent tous utiliser les mêmes tournures de phrases et la même syntaxe quand il font une rédaction ? Non. Bien sûr que non.

Et c’est là tout le problème des styleguides : ça sert à faire des moutons qui rentrent bien sagement dans le rang pour marcher docilement vers la chambre à gaz (oui, j’aime les métaphores sur nos voisins pro-aryens).

Chaque langage, qu’il soit de programmation ou de description, a sa propre syntaxe, ses propres règles, tout comme chaque langue (du mandarin au kirundi, en passant par l’anglais et le français) a sa propre grammaire et sa propre conjugaison. Mais chacun reste libre d’utiliser les formes qu’il veut, en fonction du contexte et de l’objectif à atteindre.

Donc, si vous voulez utiliser des tabulations de 2 espaces, c’est votre problème. Moi il m’en faut 4 pour m’y retrouver et mon éditeur est paramétré en conséquence. Faites pareil avec le votre et vous ne verrez pas la différence.

Et si vous voulez fermer les balises auto-fermantes (style <br />), libre à vous, je ne vous jugerai pas, je le fais aussi.

Bisous.