IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Correctif de la page : http://php.developpez.com/sources/?page=regexp#bbcodebase [Fait]


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut Correctif de la page : http://php.developpez.com/sources/?page=regexp#bbcodebase
    Dans la page : http://php.developpez.com/sources/?page=regexp
    Vous donner la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
         $t = preg_replace_callback("![(list|liste)s*=?s*([1IaA]?)]s*(:?[*](.*)s*)+[/\1]!iUs",
                                    create_function('$matches',
    "switch($matches[2])
    {
         case '1':
         $result = '<ol class="un">';
         break;
         case 'i':
         $result = '<ol class="ii">';
         break;
         case 'I':
         $result = '<ol class="II">';
         break;
         case 'a':
         $result = '<ol class="aa">';
         break;
         case 'A':
         $result = '<ol class="AA">';
         break;
         case '':
         $result = '<ul>';
         break;
    }
    for($i = 3; $i < count($matches) - 1; $i++)
    {
         $result.= '<li>' . $matches[$i] . '</li>';
    }
    return $result . '</' . substr($result, 1, 2) . 'l>';"),
                            $t);
    Le code est faux , pour le rendre valide il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
         $txt = preg_replace_callback("#\[(list|liste)s*=?s*([1IaA]?)\]s*(:?[*](.*)s*)+\[/\1\]#iUs",
                                    create_function('$matches',
    "switch(\$matches[2]) {
         case '1':
         \$result = '<ol class=\"un\">';
         break;
         case 'i':
         \$result = '<ol class=\"ii\">';
         break;
         case 'I':
         \$result = '<ol class=\"II\">';
         break;
         case 'a':
         \$result = '<ol class=\"aa\">';
         break;
         case 'A':
         \$result = '<ol class=\"AA\">';
         break;
         case '':
         \$result = '<ul>';
         break;
    }
    for(\$i = 3; \$i < count(\$matches) - 1; \$i++) {
         \$result .= '<li>' . \$matches[\$i] . '</li>';
    }
    return \$result . '</' . substr(\$result, 1, 2) . 'l>';"),
                            $txt);
    Se sont 2 erreurs bêtes :
    - les " qui ne sont pas backslaché
    - les [] du début dans le regex qui ne le sont pas aussi.


    Edition :
    le regex des titre est faux aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "![(h|title|titre)s*=?s*([2-4])](.+)[/\1[2-7]?]!iU"
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#\[(h|title|titre)\s*=?\s*([1-4])\](.+)\[/\\1(?:\\2)?\]#i'

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    En effet, je te remercie !

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Le tableau $in contient la même erreur. Il faudrait échapper les crochets.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    J'imagine que tu parles d'$out et non d'$in, n'est-ce pas ? Apparemment il y avait d'autres erreurs, j'ai corrigé au feeling mais si quelqu'un pouvait tester je crois que ce serait mieux.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/04/2007, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo