Transformer du markdown en text brut

WRInaute impliqué
Le markdown n'est certes pas très loin du text brut, mais je souhaite pouvoir obtenir une version tout à fait dépouillée de toute marque de formatage, du moins, les plus communes, y compris les tableaux (GitHub Flavored Markdown). L'objectif est d'obtenir un contenu qui soit adapté pour une recherche de texte. Quelques autres contraintes : seul le texte visible doit être pris en compte, tous les retours à la ligne non significatifs doivent être supprimés, chaque cellule de tableau doit être sur une ligne, idem pour chaque entrée de liste (ordonnée ou non) et débarassée de son marquage.

Je n'ai guère trouvé de solution prête à l'emploi pour PHP.

Il y a UnMarkdown, qui semble plus ou moins poursuivre cet objectif mais pas tout à fait : il préserve les retours à la ligne, il préserve certaines marques (les numéros pour les listes ordonnées), intègre l'URL des liens et le texte alternatif des images, rajoute des "préfixes" à certains éléments (lien, commentaire, puce) même si ce point se configure, et je n'ai pas l'impression qu'il prenne en compte les tableaux.

J'ai également songé à partir du HTML généré, puis en parcourant le DOM n'extraire que le texte, mais je ne trouve pas ça très optimal (même si pour l'usage que j'en aurais c'est tout à fait admissible).

Reste à faire un script "maison", j'ai trouvé une base dopée à ChatGPT sur une discussion, mais elle est en réalité complètement bancale : elle supprime une partie du formatage (même lorsque ça n'en n'est pas vraiment), mais surtout, elle supprime aussi le contenu formaté… En faisant des preg_replace plus propres, y'a peut-être moyen d'arriver à quelque chose de correct, mais bon si quelque chose existe déjà, ça m'évitera d'y passer trop de temps.
 
WRInaute impliqué
Après réflexion, l'analyse d'un document markdown ne saurait se résoudre à des regex (problème des blocs de code notamment).

Je suis parti de parsedown, qui assume quelques écarts par rapport à CommonMark au profit d'une réactivité accrue, que j'utilise déjà de toute façon pour transformer le markdown en HTML, et qui l'énorme avantage de tenir en un seul fichier. J'ai rajouté une option pour filtrer ce qui me semblait générer le HTML, avec l'ajout des balises et des attributs, et de quoi supprimer les lignes vides, et ça semble faire le job.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut