From e6f49578a198f0c1c312af4f9876d65e2bc30f83 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 23 Aug 2006 21:53:29 +0000 Subject: [PATCH] espaces et tags html dans les arguments des modeles (merci piif et toggg pour la regexp) --- dist/modeles/fromage.html | 16 ++++++++++++---- ecrire/inc/texte.php | 16 +++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/dist/modeles/fromage.html b/dist/modeles/fromage.html index be0712a80d..5c2c9fbc3e 100644 --- a/dist/modeles/fromage.html +++ b/dist/modeles/fromage.html @@ -11,10 +11,18 @@ <fromage1020|lait=brebis|pays=France|region=Poitou|date_appellation=1923> + ou encore avec des espaces et des tags html : + + <fromage 1020 + |lait=brebis + |pays={France} + |region=<b>Poitou</b> + |date_appellation=1923 + > + ou 1020 est le numero du document qui contient la photo, le nom du fromage (titre), et le commentaire du critique culinaire (descriptif). ] - <BOUCLE_doc(DOCUMENTS){id_document=#ENV{id_fromage}}> [(#REM) Code pour {doublons}] <table class='spip_document_#ID_DOCUMENT' border="1" align="right" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; border: 1px solid #999; border-right-width: 2px; border-bottom-width: 2px; background-color: #FFFFDD; font-size: 90%; border-collapse: collapse;"> @@ -35,15 +43,15 @@ ] [<tr> <td><b>Pays d'origine</b></td> -<td align="center" style="background: #FFFFFF">(#ENV{pays})</td> +<td align="center" style="background: #FFFFFF">(#ENV*{pays}|propre)</td> </tr>] [<tr> <td><b>Région, ville</b></td> -<td align="center" style="background: #FFFFFF">(#ENV{region})</td> +<td align="center" style="background: #FFFFFF">(#ENV*{region}|propre)</td> </tr>] [<tr> <td><b>Lait de</b></td> -<td align="center" style="background: #FFFFFF">(#ENV{lait})</td> +<td align="center" style="background: #FFFFFF">(#ENV*{lait}|propre)</td> </tr>] [<tr> <td><b>Appellation, depuis</b></td> diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 43ff87027b..dea96eccb4 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -941,18 +941,24 @@ function supprime_img($letexte) { // http://doc.spip.org/@traiter_modeles function traiter_modeles($texte, $doublons=false) { // detecter les modeles (rapide) - if (preg_match_all('/<[a-z_-]{3,}[0-9|]+/iS', + if (preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', $texte, $matches, PREG_SET_ORDER)) { include_spip('public/assembler'); foreach ($matches as $match) { // Recuperer l'appel complet (y compris un eventuel lien) - // $regs : 1 => modele, 2 => type, 3 => id, 5 => params, 6 => a + // $regs : 1 => modele, 2 => type, 3 => id, 4 => params, 5 => a $a = strpos($texte,$match[0]); preg_match( - '/^(<([a-z_-]{3,})([0-9]*)([|](.*?))?'.'>)\s*(<\/a>)?/isS', + '/^' #debut + .'(<([a-z_-]{3,})' # <modele + .'\s*([0-9]*)\s*' # id + .'([|](?:<[^<>]*>|[^>])*)?' # |arguments (y compris des tags <...>) + .'>)' # fin du modele > + .'\s*(<\/a>)?' # eventuel </a> + .'/isS', substr($texte, $a), $regs); - if ($regs[6] AND preg_match( + if ($regs[5] AND preg_match( ',<a\s.*>\s*$,Uis', substr($texte, 0, $a), $r)) { $lien = array( extraire_attribut($r[0],'href'), @@ -967,7 +973,7 @@ function traiter_modeles($texte, $doublons=false) { // calculer le modele if ($doublons) $modele = ''; else # hack articles_edit, breves_edit - $modele = inclure_modele($regs[2], $regs[3], $regs[5], $lien); + $modele = inclure_modele($regs[2], $regs[3], $regs[4], $lien); // le remplacer dans le texte if ($modele !== false) { -- GitLab