begin process at 2012 05 31 19:33:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Trucs et astuces

 > 

Qui veut relever un challenge sur les regex !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Qui veut relever un challenge sur les regex !

jeudi 30 juin 2005 à 16:00:17 | Qui veut relever un challenge sur les regex !

lnp

Membre Club
Votre attention ! ! ! A tous les pros du PHP : je lance la question. Comment transformer les lignes suivantes et n'en faire plus que 2 voire plus qu'une ? ? ? Je voudrais bien entendu que cela produise exactement le même résultat ! ! !

        while ( preg_match("!^[^a-zA-Z]|[^a-zA-Z0-9]$!i", $unsafe) ) {
            $unsafe = preg_replace("!^[^a-zA-Z]|[^a-zA-Z0-9]$!i", "", $unsafe);
        }
        while ( preg_match("!(__|--)!" , $unsafe) ) {
            $unsafe = preg_replace("!_+|-+!", "-", $unsafe);
        }

J'ai entendu dire qu'il y avait des pros sur ce forum ! ! ! Je vais chercher une solution moi-aussi, mais je suis sur qu'il y a des meilleurs que moi ! ! ! C'est un petit défi !
Ce qu'il y a à gagner ? La gloire et la satisfaction d'avoir résolu un petit problème... Rien de moins ! ! !


LNP...
pour vous...

http://manuelpayet.free.fr


jeudi 30 juin 2005 à 20:33:08 | Re : Qui veut relever un challenge sur les regex !

Anthomicro

Salut,

pour gagner en rapidité je te conseille de passer par preg_match_all au lieu de faire un while(preg_match())

ensuite tu ne peux pas passer ton code en une ligne ou deux.


    jeudi 30 juin 2005 à 21:18:53 | Re : Qui veut relever un challenge sur les regex !

    coucou747

    Administrateur CodeS-SourceS
    $unsafe=preg_replace('/-{2,}/', '-', str_replace('_', '-', preg_replace("!^[^a-z]|[^a-z0-9]$!i", "", $unsafe)));

    je crois...

    In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

    [ Lien ]
    jeudi 30 juin 2005 à 21:19:38 | Re : Qui veut relever un challenge sur les regex !

    coucou747

    Administrateur CodeS-SourceS
    au fait, permet moi de te dire que c'est quand même tordu comme concours... tordu comme expression... tordu comme traitement de chaines de caractères...

    In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

    [ Lien ]
    jeudi 30 juin 2005 à 21:21:24 | Re : Qui veut relever un challenge sur les regex !

    Anthomicro

    hum pas bête, c'est possible que ça fonctionne effectivement.


      jeudi 30 juin 2005 à 21:32:05 | Re : Qui veut relever un challenge sur les regex !

      coucou747

      Administrateur CodeS-SourceS
      j'ai gagné quoi ??

      lol, chez moi ça fonctionne parfaitement...

      ps : ton premier while ne sert à rien ^^

      In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

      [ Lien ]
      vendredi 1 juillet 2005 à 06:31:50 | Re : Qui veut relever un challenge sur les regex !

      lnp

      Membre Club
      Peut-être avez-vous besoin d'explication...

      La chaîne de caractères $unsafe finale doit :
      >> être dépourvue de tout underscore que l'on remplace par un tiret.
      >> Les double tirets doivent être remplacer par un simple tiret.
      >> Le premier caractère de la chaîne doit être une lettre de l'alphabet ( avec ou sans accent )
      >> Le dernier caractère de la chaîne doit être un lettre de l'alphabet ( avec ou sans accent ) ou un chiffre

      Voilà le résultat souhaité doit correspondre à la description ci-dessus... Le code le plus court et surtout le plus éfficace sera retenu...
      Alors les pros ! A vos marques ! Prêt... Partez ! ! !

      Pour vous aidez faire les tests sur la chaîne suivante :
      -_-_-_----_____-46zer123---_-_-_-_-_----___
      La chaîne résultat doit être :
      zer123

      Bon courage ! ! !

      LNP...
      pour vous...

      http://manuelpayet.free.fr


      vendredi 1 juillet 2005 à 06:57:04 | Re : Qui veut relever un challenge sur les regex !

      lnp

      Membre Club
      Je vous fais part de ma solution :

              $unsafe = eregi_replace("[^éèàêâôîûùç' a-zA-Z0-9_-]*", "", $unsafe);
               while ( preg_match("!^[^a-zA-Z]|[^a-zA-Z0-9]$!i", $unsafe) ) {
                  $unsafe = preg_replace("!^[^a-zA-Z]|[^a-zA-Z0-9]$!i", "", $unsafe);
              }
              while ( preg_match("!(__|--)!" , $unsafe) ) {
                  $unsafe = preg_replace("!_+|-+!", "-", $unsafe);
              }
              $unsafe = strtoupper( $unsafe );

      Elle fonctionne correctement mais je pense qu'il y a mieux ! ! ! C'est pour cela que je fais appel à vous ! ! !


      LNP...
      pour vous...

      http://manuelpayet.free.fr


      vendredi 1 juillet 2005 à 07:04:43 | Re : Qui veut relever un challenge sur les regex !

      lnp

      Membre Club
      Réponse au message de Coucou747
      Mon premier while sert justement à enlever tout les tirets en début et fin de chaîne...
      Ta solution fonctionne. Mais avec la chaîne test que je vous ai fournie, elle ne fonctionne pas et le résultat comporte toujours un tiret comme dernier caractère. Mon script par contre rend un résultat acceptable, mais pour le fun j'aimerai mieux mettre un script moins long... Moins encombrant !


      LNP...
      pour vous...

      http://manuelpayet.free.fr


      vendredi 1 juillet 2005 à 07:20:47 | Re : Qui veut relever un challenge sur les regex !

      lnp

      Membre Club
      Une meilleure solution...

              $unsafe = strtoupper( $unsafe );
               $unsafe = preg_replace("![^ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç' a-zA-Z0-9_-]*!i", "", $unsafe);
               while ( preg_match("!^[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç]|[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç0-9]$!i", $unsafe) ) {
                  $unsafe = preg_replace("!^[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç]|[^a-zA-ZÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç0-9]$!i", "", $unsafe);
              }
              while ( preg_match("!(__|--)!" , $unsafe) ) {
                  $unsafe = preg_replace("!_+|-+!", "-", $unsafe);
              }


      LNP...
      pour vous...

      http://manuelpayet.free.fr



      1 2 3

      Cette discussion est classée dans : preg, challenge, unsafe, za, relever


      Répondre à ce message

      Sujets en rapport avec ce message

      trouver une url ds un texte [ par zigou ] voila g recuperer un script php qui permet de recuperer une url ds un texte...le seul pb c que ce script n'inclus pas les urls qui comprtent des " et Métacaractères... [ par mfaraday ] Salut...Est-ce que quelqu'un pourrait m'expliquer comment utiliser les métacaractères dans un profil de recherche pour la fonction preg_match par exem Masque pour preg_match() ... Aidez-moi ! [ par LocalStone ] Alors, j'expose le problème : J'ai 1 fichier texte qui contient des ligne du style : 0004 - Chu Chu Rocket (J)Donc le masque approprié pour sépare preg_replace [ par Tomcube ] Est-ce que quelqu'un pourrait me modifier cette ligne pour la faire accepter les retours à la ligne (\n), j'ai trop de mal avec les masques ! $text = preg_replace recursif !! [ par massiliaman ] Salut je voudrais inserer un espace entre groupe de lettre et groupe de chiffre avec preg_replace mais cela de facon recurssive. Je m'explique j'ai en temp d'execution et preg_replace_callback [ par MisterV ] Je m'excuse de poster ce message, mais ayant fait une erreur alors que je postais mon message, il est arrivé dans la rubrique hebergeurs.Il me semble preg_replace [ par tungsten180 ] Salut,je débute en PHP et j'ai besoin d'utiliser la fonction preg_replace, mais je n'ai pas compris son fonctionnement.Voilà ce que je voudrais faire Rand() avec valeur regex [ par mathieumg ] Bonjour j'essaie de faire un tag [de]chiffre[/de] pour mon forum qui fera un chiffre au hasard entre 1 et le chiffre entre les tags, seulement le rand Challenge - Mobile [ par bucherb ] Hello!Existe-il un moyen de savoir si le client qui visite la page est un client fixe (iexplorer, netscape, mozilla, etc) ou, ce qui m'intéresse, un p


      Nos sponsors


      Sondage...

      Comparez les prix

      CalendriCode

      Mai 2012
      LMMJVSD
       123456
      78910111213
      14151617181920
      21222324252627
      28293031   

      Consulter la suite du CalendriCode

      A découvrir



       
      Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
      CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
      CodeS-SourceS.com© est une marque déposée tous droits réservés

      Google Coop CodeS-SourceS Google Coop CodeS-SourceS
      Temps d'éxécution de la page : 0,421 sec (3)

      Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales