Trouver des suites de caractères spéciaux dans une variable php

cs_jimmyhendrix Messages postés 34 Date d'inscription samedi 31 juillet 2010 Statut Membre Dernière intervention 26 mars 2013 - 6 déc. 2012 à 05:23
 Utilisateur anonyme - 25 déc. 2012 à 22:54
Salut !

Je suis vraiment débutant en regex et j'ai un problème que je n'arrive pas à résoudre... Je travaille en php et j'aimerais pouvoir créer un lien propre (sans caractères spéciaux) pour chacun des articles de mon site internet. Par exemple :

//Le titre de mon article est :
$titre = "J'aime les oranges... mais aussi les fraises !";

//Le lien que j'aimerais avoir :
$lien = "http://www.monsite.com/fruits/j-aime-les-oranges-mais-aussi-les-fraises";


Je saurais comment transformer en "-" tous les espaces, ponctuations et caractères spéciaux, mais je n'arrive pas à transformer une suite de caractères désobligeants. Pour être plus concret, ici, je veux pouvoir transformer "... " en un seul "-" et non pas en 3 "---" ou même 4 avec l'espace. Ou peu importe la situation, du genre $titre = "C'est un %@$&@#%$ de salaud !".

Est-ce que quelqu'un peut m'aider ?

1 réponse

Utilisateur anonyme
25 déc. 2012 à 22:54
Salut,

Vite fait l'idée :
- Tu fais un split (PHP propose une fonctionne split() ou qqch dans ce goût là) de ta variable pour pouvoir avoir chaque bloc dissocié les uns des autres. Ce split va séparer chaque mot (avec l'espace en caractère séparateur).
- Tu testes chaque bloc (split renvoie un array je crois) avec une regex afin de voir si tu n'as pas plusieurs caractères particuliers)
- Si c'est le cas tu remplaces avec un "-".

En fait, tu peux créer une variable qui va stocker ta nouvelle chaine, tu recopieras les blocs qui sont normaux et tu ajouteras un "-" pour chaque bloc ayant que des caractères que tu veux dégager.

La regex serait, grosso modo, quelque chose comme : [\.\$&@#]+ (présence d'au moins un caractère paris .$&@#.


--
Pylouq
Heureux sont ceux qui lisent le Réglement, ils ne finiront peut-être pas au bûcher.
0
Rejoignez-nous