Changeset 61172 in spip-zone


Ignore:
Timestamp:
May 10, 2012, 9:38:38 AM (7 years ago)
Author:
marcimat@…
Message:

La coloration des échappements était presque entièrement bonne, mais pour les cas de \< et \> il fallait penser que dans geshi les < et > sont échappés en &gt; et &lt; et qu'il faut en tenir compte.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/coloration_code/trunk/geshi/geshi/spip2.php

    r61128 r61172  
    233233
    234234/**
    235  * Echapper les echappements \[ \] ...
     235 * Echapper les echappements \[ \] ...
     236 * Attention a < et > qui arrivent avec &lt; et &gt;
    236237 *
    237238**/
     
    241242        // rendre inertes les echappements de #[](){}<>
    242243        $inerte = '-INERTE';
    243         $squelette = preg_replace_callback(',\\\\([#[()\]{}<>]),',
    244                 create_function('$a', "return '$inerte-'.ord(\$a[1]).'-';"), $squelette, -1, $esc);
     244        $squelette = preg_replace_callback(',\\\\([#[()\]{}<>]|&gt;|&lt;),',
     245                create_function('$a', "return '$inerte-'.ord(html_entity_decode(\$a[1])).'-';"), $squelette, -1, $esc);
    245246
    246247        return $squelette;
     
    251252 *
    252253 * Remettre les [ ( ) ] echappes des balises
     254 * Attention a < et > qui doivent repartir avec &lt; et &gt;
    253255 *
    254256**/
     
    261263        $contenu = preg_replace_callback(",$inerte-(\d+)-,",
    262264                #create_function('$a', 'return "\\\\" . chr($a[1]);'), $contenu);
    263                 create_function('$a', 'return "<|!REG3XP'.$key.'!>\\\\" . chr($a[1]) . "|>";'), $contenu);
     265                create_function('$a', 'return "<|!REG3XP'.$key.'!>\\\\" . htmlspecialchars(chr($a[1])) . "|>";'), $contenu);
    264266
    265267        // echappements de balise faits par une regexp de ce colorieur (regexp 4 à 7).
     
    565567                        ),
    566568                // permettre de colorer le \ des echappements differement
     569                // attention a \&gt; et \&lt; a la place de \> et \< dans geshi
    567570                102 => array(
    568                         GESHI_SEARCH => '(<\|!REG3XP101!>)(.)(.\|>)',
     571                        GESHI_SEARCH => '(<\|!REG3XP101!>)(.)((?:.|&lt;|&gt;)\|>)',
    569572                        GESHI_REPLACE => '\\2',
    570573                        GESHI_MODIFIERS => '',
Note: See TracChangeset for help on using the changeset viewer.