Précédent   Forum des professionnels en informatique > PHP > Langage > Regex

Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex

Réponse
 
Outils de la discussion
Vieux 04/05/2006, 17h56   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: janvier 2006
Messages: 23
Par défaut Expression régulière (ou relationnelle)

Bonjour,

Je souhaite effectuer un traitement sur une chaine pour y éliminer les caractère spéciaux.
Pour cela j'utilise une expression régulière qui va remplacer tous les caractères autres que ceux définis dans l'expression régulière par le caractère "_".

Voici le code :
Code :
 
return eregi_replace("[^a-z0-9._-àéèêù[:space:]]+", "_", $chaine); 
 
Logiquement on retrouvera une chaine avec :

- Les caractères alphanumériques sont admis (a-z0-9)
- Le point
- l'underscore
- le tiret
- les caractères accentués : àéèêù
- l'espace

Et bien non, exemple :

La chaine : ponctuation.point.[crochet](parenthèse)-tiret-;pvirg;'cote'&commercial&²carre²#diese#{acolade}`coteinc`_undersc_^chap^@arob@=egal=+plus+r7àá
donnera :
Ponctuation.point._crochet_parenthèse_tiret_pvirg_cote_commercial_²carre²_diese_{acolade}`coteinc`_undersc__chap_arob_egal_plus_r7àa

Ma question : pourquoi reste-t-il des caractères spéciaux ??

Un spécialiste des expression régulière peut-il se pencher sur mon prob ??

Merci d'avance de vos réponses...
nguthans est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/05/2006, 18h10   #2 (permalink)
Rédacteur
 
Avatar de Swoög
 
Date d'inscription: janvier 2003
Localisation: Montréal [NDG] (Québec, Canada)
Âge: 22
Messages: 6 095
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Par défaut

tu as mis un tiret au milieu de ta classe ^^
Code :
return eregi_replace("[^a-z0-9._àéèêù -]+", "_", $chaine);
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/05/2006, 11h45   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: janvier 2006
Messages: 23
Par défaut

Cool ça fonctionne...

Je vais devoir me pencher un peu plus sur sur les expressions régulières pour bien les maitriser. Car je n'ai pas compris le comment du pourquoi de la réponse (emplacement spécifique du tiret dans la classe... espace non représenté par [:space:]...)

Enfin, ça fonctionne !

Merci Swoög !

@++
nguthans est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/05/2006, 12h13   #4 (permalink)
Rédacteur
 
Avatar de Swoög
 
Date d'inscription: janvier 2003
Localisation: Montréal [NDG] (Québec, Canada)
Âge: 22
Messages: 6 095
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Par défaut

De rien

pour le [:space:] je l'ai modifié par ce que j'évite d'utilser les meta-classes au maximum c'est tout

pour le tiret, c'est parce que un tiret au mileu d'une classe de caractère signifie un interval, comme tu l'as mis pour a-z et 0-9 donc là, tu spécifias l'intervale : _-à d'où le bug ^^ si tu veux avoir le vrai tiret littéral, il faut le placer là où il ne peut faire partit d'un interval : à la fin de la classe
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCOURS PHPSOURCES PHPLIVRES PHPSCRIPTS PHPOUTILS PHPCOMPARATIFSZend Framework

Réponse

Précédent   Forum des professionnels en informatique > PHP > Langage > Regex



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h37.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2009 www.developpez.com - Legal informations.