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
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/08/2006, 23h23   #1
Futur Membre du Club
 
Inscription : janvier 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 60
Points : 15
Points : 15
Par défaut Regex pour les accents et autres

Bonjour,

Connaissez vous le regex utilisé sur dotclear qui permet pour le rewrinting de changer un terme comme celui-ci

Google Code Jam 2006 : c'est parti !

Par ceci

google-code-jam-2006-c-est-parti

-Donc apparement, il supprime(ou remplace par rien) les carctères interdits dans un url comme @*%&/ etc....
-Le majuscule passe en minuscule
- les espaces sont remplacés par un -
Etc...

Existe t'il un regex qui fasse tout ça (si seulement vous me répondrez peut-être... rire)

D'avance merci de vos tuyaux
Cordialement
Yule
yule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2006, 23h44   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Je dirais que tu as une partie de la réponse ici : Initiation aux expressions régulières en PHP
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2006, 10h44   #3
Futur Membre du Club
 
Inscription : août 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 17
Points : 19
Points : 19
Salut,

à mon avis, il s'agit de plusieurs opérations à la suite :
- passage de la chaîne en minuscules via strtolower()
- remplacements via une RegExp ou str_replace()

En général, il est préconisé de "whitelister" plutôt que "blacklister" les caractères d'une chaîne, donc de lister ceux qu'on veut au final et d'écarter tous les autres.
Ici, on remarque 2 types de modifications : ":", l'espace et l'apostrophe sont remplacés par un tiret, le reste est supprimé. On remarque également que " : " ne donne qu'un unique tiret et pas 3.

Concernant les accents, ton exemple n'en montre pas et j'avoue ne pas savoir comment il procède.
Un exemple rapide de code permettant la transformation que tu donnes, avec chaque étape bien détaillée. C'est surement possible de l'améliorer, mais ça fonctionne :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?
	$str = "Google Code Jam 2006 : c'est parti !";
	// passage en minuscules
	$str = strtolower($str);
	// remplacement des caractères voulus non alphanumériques par des tirets
	$str = ereg_replace("[: ']", "-", $str);
	// suppression des tirets en trop
	$str = ereg_replace("[-]{2,}", "-", $str);
	// suppression de tous les caractères non voulus
	$str = ereg_replace("[^-a-z0-9]", "", $str);
	// suppression de l'éventuel tiret de fin
	$str = ereg_replace("-$", "", $str);
?>
Shini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2006, 15h23   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Pour le passage en minuscule c'est pas obligé on peut le faire directement avec les expressions régulières en mettant
Citation:
i
Permet de ne pas tenir compte de la casse. Ainsi, les masques [a-z], [A-Z] et toutes leurs variantes sont équivalents. Il est inutile de préciser [a-zA-Z], ce qui peut être pratique dans de nombreux cas.
A la fin du masque
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2006, 15h47   #5
Futur Membre du Club
 
Inscription : août 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 17
Points : 19
Points : 19
Oui, mais dans l'exemple, on a bien un passage en minuscules
"Google Code Jam" |-> "google-code-jam"
Shini est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web