Expressions régulières

Résolu
nickleus Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   -  
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   - 13 janv. 2009 à 12:47
Bonjour,

je cherche à transformer une chaine de caractères en url jusque là pas de problèmes.
Mais de temps en temps je tombe sur une chaine de ce type :

skdjjdq---qklsdjl-ksjd-sqd-

en faite je voudrais supprimer les suites de "---" et quand le caractère est en fin de chaine supprimer le "-"

Pouvez-vous me dire quel expression me permettrais de faire ça ?

merci d'avance.

11 réponses

Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

et est-ce que ça n'irait pas plus vite avec un bon vieux str_replace() des familles ?
0
nickleus Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   5
 
merci pour ta réponse, mais j'utilise preg_replace().

En faite ma question était quel pattern me permettrais de remplacer les "---" par "-" et pareil pour la fin de chaine ?

Désolé si je me suis mal expliqué.
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

j'avais bien compris mais pour des remplacement assez simples, c'est souvent plus rapide et moins gourmand en ressources de ne pas utiliser les expressions régulières.

pour les tirets > 1 je ferais ça :
`[-]{1,}`

et pour le tiret final ça :
`[-]$`

mais j'ai jamais été très fort à ce jeu là !

+ expreg.com
0
nickleus Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   5
 
merci. Tu dis que t'es pas très fort à ce jeu là mais en tout cas ça marche !

merci beaucoup ça m'enlève une bonne épine du pied.
0

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

Posez votre question
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
heureux d'avoir pu te dépanner !

est-ce que tu réussis à faire les deux en une fois et si oui, comment ?
0
nickleus Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   5
 
Pour le moment non, mais j'étais justement en train de chercher comment faire ...
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
j'avais pensé à ça :
`^.*[-]{1,}.*[-]$`
0
nickleus Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   5
 
En faite non. Car :
`^.*[-]{1,}.*[-]$`


va effectivement trouver la chaine de caractère et la remplacer par un tiret. Alors que le but est de remplacer tous les '---' par un tiret et sir le '-' est en fin de chaine par 'rien';
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
preg_replace(array('`[-]{1,}`', '`[-]$`'), array('-', ''), $chaine)
0
nickleus Messages postés 374 Date d'inscription   Statut Membre Dernière intervention   5
 
et c'est ce que j'ai fait :)
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
(O_ô)'
preg_replace(array('`^.*[-]{1,}.*$`', '`^.*[-]$`'), array('-', ''), $chaine)
0