Partage
  • Partager sur Facebook
  • Partager sur Twitter

ma premiere regex

y a-t-il plus simple ?

    17 janvier 2006 à 0:25:47

    hello,
    voilà, j'en ai faite une tout seul comme un grand, mais je la trouve un peu lourde et je me demande si il n'y a pas plus court comme code:
    $accent=array('![âäà]!','![éèêë]!','![ïî]!','![öô]!','![ùüû]!');
    $sansaccent=array('a','e','i','o','u');
    echo $text=preg_replace($accent,$sansaccent,$text);

    ça remplace les caractères accentués par leurs equivalents sans accent.
    • Partager sur Facebook
    • Partager sur Twitter

    Python c'est bon, mangez-en. 

      17 janvier 2006 à 0:38:57

      beaucoup moins lourd:

      $accent=array('â', 'ä', 'à', 'é', 'è', 'ê', 'ë');
      $sansaccent=array('a', 'a', 'a', 'e', 'e', 'e', 'e');
      echo $text=str_replace($accent,$sansaccent,$text);
      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2006 à 10:57:50

        Quand tu veux uniquement remplacer des caractères par d'autres, n'utilise pas les regex, mais str_replace(), beaucoup moins lourd.
        Les regex ne sont à utiliser que si tu remplaces quelque chose de "variable", exemple :

        $texte = preg_replace('`\[b\](.+)\[/b\]`iUs','<strong>$1</strong>',$texte);
        // mais
        $texte = str_replace(' :) ',' <img src="smileys/sourire.gif" alt=":)" /> ',$texte);


        Le texte entre [b] et [/b] varie, alors que le code du smiley non.
        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2006 à 12:49:42

          donc:
          $accent=array('â', 'ä', 'à', 'é', 'è', 'ê', 'ë'..etc..);
          $sansaccent=array('a', 'a', 'a', 'e', 'e', 'e', 'e'..etc..);
          $text=str_replace($accent,$sansaccent,$text);
          $text=preg_replace('!\W+!','_',$text);



          est plus efficace que:
          $accent=array('![âäà]!','![éèêë]!','![ïî]!','![öô]!','![ùüû]!','!ñ!','!ç!','!\W+!');
          $sansaccent=array('a','e','i','o','u','n','c','_');
          $text=preg_replace($accent,$sansaccent,$text);

          même si le 1er cas utilise une ligne supplémentaire ??
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            17 janvier 2006 à 13:16:03

            La rapidité du script ne correspond pas au nombre de lignes, mais à ce qui est utilisé. Plus tu va remplacer des fonctions lentes par des rapides, mieux ça vaudra.
            • Partager sur Facebook
            • Partager sur Twitter
              17 janvier 2006 à 16:55:58

              Citation : 6(sic)6

              Quand tu veux uniquement remplacer des caractères par d'autres, n'utilise pas les regex, mais str_replace(), beaucoup moins lourd.



              C'est un rien raccourci, mais en règle générale c'est ça.
              Il convient néanmoins de nuancer car même le remplacement d'un simple caractère fixe peut ne pas se réaliser si on n'utilise pas une regex ;)
              A voir selon les cas !

              La règle est simple :
              A travail et résultat identiques, la fonction native PHP doit toujours l'emporter sur la plus basique des regex.
              • Partager sur Facebook
              • Partager sur Twitter

              ma premiere regex

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown