Changeset 61883 in spip-zone


Ignore:
Timestamp:
May 31, 2012, 11:27:07 AM (7 years ago)
Author:
marcimat@…
Message:

Ne pas planter une regexp contenant (?=...) sur un PCRE qui ne comprends pas.

File:
1 edited

Legend:

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

    r61635 r61883  
    9595@define('REG_INCLURE','(<INCLU(D|R)E)(\([^)]*\))?(.*)?(>)');
    9696
     97// Ce qui suit un filtre d'operation tel que |> |< |== |? ...
     98// doit toujours etre une { ou equivalent ( la capture d'un parametre (REGEXP40) )
     99// On le teste pour eviter de prendre | <style> par exemple
     100// Mais certaines versions de PCRE (7.6 ko, 8.12 ok) plantent sur cette recherche de suite,
     101// donc on ne le fait pas pour ces vieilles versions
     102if (version_compare(current(explode(' ', PCRE_VERSION, 2)), '7.7', '>=')) {
     103        @define('REG_SUITE_FILTRE', '(?={|<\|!REG3XP40!>)');
     104} else {
     105        @define('REG_SUITE_FILTRE', '');
     106}
     107
    97108// |filtre |class::methode
    98109// et |>= |?
    99110@define('REG_NOM_FILTRE', '((?:<PIPE>\s*[a-z_][a-z0-9_=]*(::[a-z0-9_]*)?)'
    100                 // |< et consoeurs sont toujours suivis par une accolade ouvrante {,
    101                 // mais ce peut etre aussi suivi par la capture d'un parametre (REGEXP40)
    102                 // dans nos recherches egalement
    103                 // on le teste pour eviter de prendre | <style> par exemple
    104                 . '|(?:<PIPE>\s*(?:&gt;=?|&lt;=?|&lt;&gt;|===?|!==?|\?)(?:\s*)(?={|<\|!REG3XP40!>)))');
     111                // |< et consoeurs sont toujours suivis par une accolade ouvrante {
     112                . '|(?:<PIPE>\s*(?:&gt;=?|&lt;=?|&lt;&gt;|===?|!==?|\?)(?:\s*)'
     113                . REG_SUITE_FILTRE
     114                . '))');
    105115// la meme chose, mais sans etre capturant.
    106116@define('REG_NOM_FILTRE_TOUT', '(?:(?:<PIPE>\s*[a-z_][a-z0-9_=]*(?:::[a-z0-9_]*)?)'
    107                 . '|(?:<PIPE>\s*(?:&gt;=?|&lt;=?|&lt;&gt;|===?|!==?|\?)(?:\s*)(?={|<\|!REG3XP40!>)))');
     117                . '|(?:<PIPE>\s*(?:&gt;=?|&lt;=?|&lt;&gt;|===?|!==?|\?)(?:\s*)'
     118                . REG_SUITE_FILTRE
     119                . '))');
    108120
    109121// #BALISE
Note: See TracChangeset for help on using the changeset viewer.