// 2007/07/30 20:38 / 90.1.187.152

Pour une balise de code efficace



Changement de la balise de { vers { { pour ne pas avoir de collision avec les fonctions

j'ai une 1ere version qui marche \o/ → 2.19+4b2

Fonctionnement et code source


L'idée est d'extraire le code de la page avant le traitement des regex. Comme cela on évite que les autres balises soient interprétées.
Ensuite, on les re-insère à la fin. Cela se fait donc en deux parties :
  1. On remplace le texte contenu entre les balises { { et } } par le token CODE (ligne 203 en TW2.21) :
$CONTENT = preg_replace("/\/Umsi", "\", $CONTENT);

$nbcode = preg_match_all("/{{(.+)
/Ums",$CONTENT,$matches_code);

$CONTENT = preg_replace("/
(.+)
/Ums","<code><pre>
CODE
</pre></code>",$CONTENT);
$CONTENT = preg_replace("/\(.)/Umsie", "'&#'.ord('\\1').';'", $CONTENT);
}}
  1. Puis à la fin, on remplace ce token par le texte préalablement extrait (ligne 259 en TW2.21) :
   $CONTENT = html_entity_decode($CONTENT);
   function matchcode($m) {global $matches_code;static $idxcode=0; return $matches_code[1][$idxcode++];}

   if ($nbcode > 0)

      $CONTENT = preg_replace_callback(array_fill(0,$nbcode,"/{{CODE
/"),"matchcode",$CONTENT);

}
}}

Problèmes


pour du code :
{{ print "hello"; 

}}