Petit problème REGEX

Statut
N'est pas ouverte pour d'autres réponses.
Je préviens à l'avance, je suis un chouia merdissimal avec les expressions régulières.

Voici donc mon problème, et mon essaie de solution. Mon but est simple, j'essaie d'effacer tout mot dans une chaine de caractère de moins de 3 caractères :
Code:
<?php
		 $chaine = "uuujjj k kd llo kjjdjjd ld llkj l jjjh kk !";
		 $chaine = preg_replace("#[a-zA-Z0-9]{1,3}#", "", $chaine);
		 echo $chaine;
?>
Pour ceux qui auraient testé, mon REGEX actuelle m'efface tout :-( et me laisse que mon " ! " :-(

Si quelqu'un a une solution pour faire ce que je désire, je suis prenneur :)
 

Tifox

ou pas
Je lance mon serveur php, je regarde et je reviens ;)

Voila, ce fut un peu plus dur que ce que je pensais, mais ceci devrait donner la bonne solution. Ca gère aussi les mot de 3 lettres ou moins en début et fin de chaine, et les succession de ces mots

Code:
$chaine = 'aaa uuujjj k kd llo kjjdjjd ld llkj l jjjh kk ! zz';
$chaine = preg_replace("#(^|\s)(\w{1,3}(\s|$))+#", " ", $chaine);
echo 'aaa uuujjj k kd llo kjjdjjd ld llkj l jjjh kk ! zz';
 

Tifox

ou pas
Mais de rien ;)
 

ozilrit

Elite
Coucou Tifox,

voici une variante :
Code:
<?php
$chaine = 'aaa uuujjj k kd llo kjjdjjd ld llkj l jjjh kk ! zz';
$chaine = preg_replace('/\b\w{1,3}\b/','', $chaine);
echo ($chaine);
?>
J'avoue ne pas comprendre ton expression : (début ou espace) ? (espace ou fin) ? Pourquoi des parenthèses de capture ? :)

Alors, dans un but purement scientifique :-D (ou plutôt parce que je m'ennuie), un petit essai :


preg_replace('/\b\w{1,3}\b/','', $chaine) => uuujjj kjjdjjd llkj jjjh !

preg_replace('#(^|\s)(\w{1,3}(\s|$))+#',' ', $chaine) => uuujjj kjjdjjd llkj jjjh

1024 fois '#(^|\s)(\w{1,3}(\s|$))+#' : 0.012709ms.
1024 fois '/\b\w{1,3}\b/' : 0.007936 ms.

32768 fois '#(^|\s)(\w{1,3}(\s|$))+#' : 0.40276 ms.
32768 fois '/\b\w{1,3}\b/' : 0.248849 ms.


C'est dingue ce que je m'ennuie. :=)
 

Tifox

ou pas
tiens, je connaissais pas '\b', c'est quoi (mon site de référence est en rade et j'ai un peu la flemme de chercher :oops: ) ?

Ceci dit, je m'attendais a ce que ma requête ne soit pas des plus efficaces.
 

Tifox

ou pas
Ah ben effectivement, c'est beaucoup plus simple avec ça. J'en apprend tous les jours. :)
 

SkYlEsS

Elite
C'est quoi vos sites de référence ... ?

Et puis, comment tu réalises les tests au fait ? :roll:
 
1er
OP
P

PunkDeLuxe

condom
SkYlEsS a dit:
C'est quoi vos sites de référence ... ?

Et puis, comment tu réalises les tests au fait ? :roll:
Pour le test, une simple boucle "FOR" le tout en comptant le temps en microtime. Puis tu regardes lequel va le plus vite :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut