Le besoin spécifique
Parmi la longue liste des plugins et modules que je dois développer pour le bureau, ce matin, j'ai décidé de coder mon plugin le plus essentiel dans le cadre de mon travail. En effet, comme je travaille sur des articles jumia content relativement complexe, avec pas mal de composants pour afficher des galeries photos, pour afficher des onglets, ou encore plein d'autres choses, il m'est très fréquent au cœur même de mes articles jumia de spécifier en commentaire HTML des informations qui me sont destinés. Ainsi, lorsque j'hésite mon article en code pur, je n'utilise jamais les éditeurs graphiques, je vois apparaître ce que je dois réaliser pour tel ou tel action spécifique. Cependant, les utilisateurs lambda de mon intranet ne sont pas censé savoir ce que j'ai spécifié dans mes commentaires HTML.
Principe de fonctionnement
Je ne vais pas rentrer trop dans le détail de ce principe de fonctionnement car il se trouve qu'il est véritablement très simple, je recherche les commentaires au moyen d'expression rationnelle, et lorsque je les trouve, je les supprime. Rien de bien compliqué.
J'utiliise donc l'expression rationnelle suivante :
'/<!--(?!<!)[^\[>].*?-->/m'
Pourquoi cette expression rationnelle ?
Comme beaucoup de développeurs, je suis très souvent à la lecture du superbe site Stack Overflow. Et vous pensez bien que je ne suis pas le seul développeur qui se posait la question à savoir comment supprimer proprement des commentaires HTML au moyen d'expression rationnel. En suivant le fil de discussion de ce vieux poste, les auteurs en ont conclu que la meilleure expression rationnelle pour supprimer des commentaires HTML était la suivante. Je me suis donc fier sur leur savoir-faire.
removehtmlcomment.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentRemoveHTMLcomment extends JPlugin
{
function onContentPrepare($content, $article, $params, $limit){
$subst = "";
$re = '/<!--(?!<!)[^\[>].*?-->/m';
$article->text = preg_replace($re, $subst, $article->text);
}
}
removehtmlcomment.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="Content">
<name>Supprime tous les commentaires HTML d'un article</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Janvier 2023</creationDate>
<copyright>Sébastien LHUILLIER</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
<authorUrl>www.sebastien-lhuillier.com</authorUrl>
<version>1.0</version>
<description>Affiche un lien vers le fichiers (distant) s'il est accessible</description>
<files>
<filename plugin="removehtmlcomment">removehtmlcomment.php</filename>
<filename>removehtmlcomment.xml</filename>
</files>
</extension>
