<code> dans <code>
Si on "neste" ou (html|code|cadre|frame|script) plus généralement, la fermeture
de l'élément intérieur ferme l'élément englobant , laissant la derniére partie de celui-ci.
Nous avions essayé dans coloration_code qui utilisait la même regexp d'y inclure un modèle récursif (?R). Le résultat était tout à fait satisfaisant mais malheureusement buggué pour PHP-4.2.2, mémoire mangée grosso modo. Je dois ajouter que (?R) est très consommateur comme nous le constatons dans PEAR::Text_Wiki.
Je propose donc ici une solution procédurale pour traiter ces cas récursifs dans echappe_html. Le seul break BC qu'elle présente est le regexp passé en 4ème paramètre optionnel , la formulation se restreint mais se simplifie, il n'est pas utilisé dans le core...
J'ai fait des tests de performances http://toggg.com/spip/spip.php?article16 , le source du test est sur la zone : http://trac.rezo.net/trac/spip-zone/browser/dev/TESTS/echappe_html
Où l'on voit que (?R) ne vaut pas le risque. Evidemment cette solution procédurale est un peu plus couteuse , mais il semble que c'est minimal pour les textes n'ayant pas de telle balise (99% des cas ?).