Groupe PhP

Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Groupe PhP

Forum du groupe d'apprentissage mutuel en PHP

Le deal à ne pas rater :
Cartes Pokémon : la prochaine extension Pokémon sera EV6.5 Fable ...
Voir le deal

2 participants

    [REGEX] Optimisation

    Single Dark
    Single Dark
    Débutant PHP
    Débutant PHP


    Messages : 63
    Date d'inscription : 06/09/2009
    Age : 35
    Localisation : Brest

    [REGEX] Optimisation Empty [REGEX] Optimisation

    Message par Single Dark Mer 16 Sep - 17:56

    Boujour,

    J'ai un p'tit problème, enfin c'est pas vraiment un porblème, mais plutôt une demende de conseil.

    Voilà, je suis actuellement en train de concevoir le script qui va permettre au futur administrateur de mon C.M.S de crée/modifier les designs.

    Pour ça sa marche, j'explique en gros, le gars arrive sur la page des style 'view_style.php' il choisi le style qu'il veut modifier, par exemple 'style01'.

    Sa le redirige vers un autre page 'mod_style.php' où il voit le code CSS complets, exemple 'design/css/style01.css'.

    Là pas de problème. Je suis en train de code une fonctionnalité bien sympa, qui va permettre de mettre dans des inputs les champs de CSS.

    Pour celà j'utilise un regex de mon cru :


    Code:

    preg_replace   ('#([\#a-zA-Z.-_, ]+) \{(.+)\}#isUe', '$array_css[] = array(\'balise_name\' => \'$1\', \'value\' => array_map(\'trim\', explode(\': \', implode(\': \' ,explode(\';\', \'\\2\', -1)))));', $css);

    Elle fonctionne, je ne sais pas par quel mircale mais elle marche.
    Tout c'est explication juste pour vous demandez si il était possible d'optimiser cette regex.

    Merki...
    Berdes1
    Berdes1
    Soutien PhP
    Soutien PhP


    Messages : 167
    Date d'inscription : 06/09/2009

    [REGEX] Optimisation Empty Re: [REGEX] Optimisation

    Message par Berdes1 Mer 16 Sep - 18:48

    Je pense qu'avec une fonction de callback, ce serra beaucoup plus rapide Wink

    Code:
    <?php
    function callback($matches)
    {
      global $array_css;
      $array_css[] = array('balise_name'=>$matches[1], 'value'=>array_map('trim', explode(': ', implode(': ' ,explode(';', $matches[2], -1)))));
    }
    preg_replace_callback('#([\#a-zA-Z.-_, ]+) \{[^}]\}#isU', 'callback', $css);
    Par contre, je suis pas sûr que le array_map('trim', explode(': ', implode(': ' ,explode(';', $matches[2], -1)))) soit très bien.
    Single Dark
    Single Dark
    Débutant PHP
    Débutant PHP


    Messages : 63
    Date d'inscription : 06/09/2009
    Age : 35
    Localisation : Brest

    [REGEX] Optimisation Empty Re: [REGEX] Optimisation

    Message par Single Dark Mer 16 Sep - 19:16

    Je te remercie, je vais testé ça.

    Sinon:

    Code:

    (preg_replace   ('#([\#a-zA-Z.-_, ]+) \{(.+)\}#isUe', '$array_css[] = array(\'balise_name\' => \'$1\', \'value\' => \'\\2\');', $css));

    // Donne

    Array
    (
        [0] => Array
            (
                [balise_name] => body
                [value] =>
       color: #F0E39E;
       background: #2C2F22;

            )

        [1] => Array
            (
                [balise_name] => a
                [value] =>
       color: #FF6533;

            )
    );

    Le trim me permet de shinter les espaces en trop.

    Je suis d'accord sur le fait du explode(implode(explode))), mais je peut pas faire mieux.

    Tiens, j'ai une idée faire un bon vieux str_replace(';', ':', $css); sera p'être plus rapide...
    Single Dark
    Single Dark
    Débutant PHP
    Débutant PHP


    Messages : 63
    Date d'inscription : 06/09/2009
    Age : 35
    Localisation : Brest

    [REGEX] Optimisation Empty Re: [REGEX] Optimisation

    Message par Single Dark Mer 16 Sep - 19:32

    Merki, ca troune niquel


    Code :

    Code:

    <?php
       function callback($matches)
    {
      global $array_css;
     
      $array_css[] = array('balise_name'=>$matches[1], 'value'=>array_map('trim', explode(': ', $matches[2], -1)));
    }


          $css   =   str_replace   (';', ': ', $css);
          $css   =   preg_replace   ('#(\/\* (.+) \*\/)#', '', $css);
     preg_replace_callback('#([\#a-zA-Z.-_, ]+) \{(.+)\}#isU', 'callback', $css);
    ?>

    Contenu sponsorisé


    [REGEX] Optimisation Empty Re: [REGEX] Optimisation

    Message par Contenu sponsorisé


      La date/heure actuelle est Dim 19 Mai - 10:21