Qui veut relever un challenge sur les regex !

lnp Messages postés 96 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 24 octobre 2007 - 30 juin 2005 à 16:00
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 1 juil. 2005 à 14:39
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 ! ! !

<hr size="2" width="100%"> 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);

}

<hr size="2" width="100%">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

27 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 juil. 2005 à 14:12
Ok d'accord, mais donc que faut-il faire précisément ? supprimer les -
d'une chaîne, supprimer les -- ? faut faire quoi sur tes chaînes ?



Donne-moi une expression en français de ce qu'il faut faire et on
avisera, parce que là à la vue de tes exemples il peut y avoir des
tonnes de possibilités.



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
lnp Messages postés 96 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 24 octobre 2007
1 juil. 2005 à 14:16
$unsafe=preg_replace('/-{2,}/','-',str_replace('_','-',preg_replace("!^[^ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç'a-z]*?([ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç'
a-z].*?[ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç' a-z0-9])[^ÉÈÀÊÂÔÎÛÙÇéèàêâôîûùç'
a-z0-9]*?$!i", "\\1", $unsafe)));



La solution de coucou747 est très proche du résultat demandé mais il
reste quand même quelques failles ! ! ! Malheureusement je préfére
garder ma solution même si elle est moins propre à cause de ces boucles
horribles ! ! ! Je prévilégie le résultat pour l'instant...


LNP...

pour vous...



http://manuelpayet.free.fr
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
1 juil. 2005 à 14:17
fx( &é"'("é"&é"'("' ) >> ééé


celle la, je ne comprends pas...

on doit faire quoi d'autre ?



ta fonction doit renvoyer quoi exactement, ???



ta fonction d'origine ne fait ça ça !



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

http://coucou747.hopto.org
0
lnp Messages postés 96 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 24 octobre 2007
1 juil. 2005 à 14:19
Je RE-poste le commentaire explicatif :



<hr size="2" width="100%">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

<hr size="2" width="100%">


LNP...

pour vous...



http://manuelpayet.free.fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
1 juil. 2005 à 14:22
je ne vois pas en quoi



&é"'("é"&é"'("'



deviendrait



ééé


il devrait plutot devenir :



é"'("é"&é


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

http://coucou747.hopto.org
0
lnp Messages postés 96 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 24 octobre 2007
1 juil. 2005 à 14:25
<hr size="2" width="100%">
$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);

}

<hr size="2" width="100%">Le script ci-dessus donne le résultat demandé... En tout cas je n'ai pas encore trouvé de faille...


LNP...

pour vous...



http://manuelpayet.free.fr
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 juil. 2005 à 14:39
"je ne vois pas en quoi

&é"'("é"&é"'("'

deviendrait

ééé



il devrait plutot devenir :



é"'("é"&é"


Tout à fait, bref si y'a des exceptions pour les caractères spéciaux
merci d'en faire part. Sinon merci pour le repostage des explications
j'avais pas vu. Bref si j'ai le temps je regarde ce soir ce que je peux
faire.
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
Rejoignez-nous