Expression régulière : doublement

Résolu
cbyvd Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 20 juin 2005 - 5 juin 2005 à 09:49
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 8 juin 2005 à 21:34
Bonjour à tous,

J'essaie de créer une expression régulière qui fasse :

- le doublement des @ sauf si cela commence par t et suivi d’une lettre

Exemple :

@ @. abcd @@ t@b t@@b doit donner @@ @@. abcd @@@@ t@b t@@@@b

J'arrive à ceci : @ @@. abcd @@@ t@b t@@@b grace à

$in= "@ @. abcd @@ t@b t@@b"
$out = ereg_replace("([^t])@([^:alpha:])","\\1@@\\2",$in);

- il ne double pas le premier @
- lorsqu’il y a plusieurs @ qui se suivent, il n’en double qu’un seul.

Merci d’avance pour votre aide.

J'ai résolu mon problème via des boucles et des tableaux mais ce n'est pas très performant.

cbyvd

6 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 juin 2005 à 13:23
salut

en fait, il ne peut pas traiter le caractère après un arobase (car il est dans le [^\w])

<html>

<?php
$in= "@ @. abcd @@ t@b t@@b";
$out = preg_replace("/([^t]?)@([^\w])/","\\1@@\\2",$in);
$out=str_replace('@@@','@@@@',$out);
echo $in.'
'.$out.'
@@ @@. abcd @@@@ t@b t@@@@b';
?>


</html>

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

[url]http://coucou747.hopto.org/url
3
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
6 juin 2005 à 14:10
Juste par curiosité, quel sera l'utilité d'un tel code?

---Perig---
Pour vous servir
Et parfois en galère
Souvent même
0
cbyvd Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 20 juin 2005
8 juin 2005 à 20:00
Merci pour votre aide. J'ai une solution.

Pour un module de recherche.

++
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 juin 2005 à 20:02
mais ma solution marche parfaitement !

fais au moins réponse accèptée et détaills l'utilité du code...

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

[url]http://coucou747.hopto.org/url
0

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

Posez votre question
cbyvd Messages postés 5 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 20 juin 2005
8 juin 2005 à 21:07
Je n'ai pas dit que ta solution ne marchait pas et je te remercie encore pour elle.

J'ai posté le même problème sur un autre forum et il en est sorti cette solution :


$out = str_replace(
[mailto:'@' '@'
],
[mailto:'@@' '@@'
], $in);
$out2 = preg_replace(
[mailto:'#t@@([a-zA-Z])#' '#t@@([a-zA-Z])#'
], 't
[mailto:t@@b t@@b] en t@b.

Et d'après ces gens, l'utilisation de cette solution est plus rapide q'une fonction preg_replace compliquée.

Comme je n'y connais pas grand chose, j'ai accepté cette solution.

++
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 juin 2005 à 21:34
on a eu la même solution... relis, c'est équivalent

Tu peux faire réponse acceptée, ça servira pour le moteur de recherche et pour les personnes qui veulent répondre...

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

[url]http://coucou747.hopto.org/url
0
Rejoignez-nous