Une fonction pour vérifier l'usage de <modeles> dans un #TEXTE ?

Bonjour,

Je cherche à réaliser un tableau de suivi d’intégration d’articles.
Certains sujets nécessitent d’utiliser des modèles pour pouvoir être publiés.
Par exemple le texte d’un article devra utiliser au moins un modèle <imagexx> et deux modèles <tableauxx> pour être publiable.

Dans un premier temps, je cherche simplement à réaliser une fonction qui prendrait un #TEXTE comme paramètre et pourrait me retourner un tableau des modèles utilisés au sein du texte.

Est-ce que des fonctions natives exploitables et sa rapprochant plus ou moins existent déjà ?

Dans le code de SPIP, je découvre la Classe Modeles.php : https://search.spip.net/git.spip.net/spip/spip/-/blob/ecrire/src/Texte/Collecteur/Modeles.php

Cela semble s’approcher de ce que je recherche, mais certainement trop bas niveau pour que je puisse m’appuyer dessus…

Auriez-vous des pistes/idées pour gérer cela proprement ?

J’ai pu avancer en tentant via SQL une requête de ce type :

SELECT 
    id_lieu
FROM 
    spip_lieux
WHERE 
    texte REGEXP '<image[0-9]+>'
GROUP BY
    id_lieu;

La REGEXP fonctionne, mais MARIADB en version 10 ne prend malheureusement pas en charge la fonction SQL REGEXP_COUNT qui aurait pu permettre de compte le nombre de modèles utilisés, représentés par la REGEXP.

J’ai bien trouvé une voie de contournement mais je ne la trouve pas satisfaisante :

SELECT 
    id_lieu,
    SUM(
        (LENGTH(texte) - LENGTH(REPLACE(texte, '<image', ''))) / LENGTH('<image')
    ) AS modeles_image
FROM 
    spip_lieux
WHERE 
    texte REGEXP '<image[0-9]+>'
GROUP BY
    id_lieu;

Je préfèrerai donc gérer cela via PHP plutôt qu’en SQL…

Ça semble la bonne piste car c’est bien ce que le core utilise pour détecter les modèles dans les textes des objets cf Sourcegraph & Sourcegraph