URL Rewriting

Résolu
Utilisateur anonyme -  
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,


Dans le cadre d'une URL rewriting, je souhaite remplacer dans une variable $var (par exemple) certains caractères en PHP comme ceci :

" " --> "-"
"!" "?" "," "." "'" """ --> supprimer
"é" --> "e" (enfin supprimer les accents des e, a, o, u, i)
Et supprimer les majuscules.


Exemple concret :
J'ai $var="J'aime les frites, mais avec du ketchup ! Et toi étranger ?.."

donnerait :
$var="jaime-les-frites-mais-avec-du-ketchup--et-toi-etranger" (on ne fait pas de tiret à la fin si possible car il n'y a rien après)

J'ai essayé avec str_replace mais vraiment je galère.

Pourrais-je avoir votre aide svp ?
Merci d'avance !

5 réponses

AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Le preg_match, je ne maîtrise pas assez, parce que ça prend les regexp et même si c'est un outil formidable, je m'y plante une fois sur deux. Je laisse quelqu'un d'autre te répondre avec ça.

Je pense que tu dois faire par étape et je ne sais pas si php aime bien mettre la même variable sur la même ligne (cela dépend, mais j'ai vu des cas où ça ne fonctionnait pas) Je vais te faire le truc le plus facile à mettre en place :

Les accents :
https://www.commentcamarche.net/faq/8063-supprimer-les-accents-avec-php
La ponctuation :
$tab_ponctuation = array("!", "?", ",", ".", "'", """);
$noponctuation = str_replace($tab_ponctuation, "", $var);
Les espaces :
$no_espace = str_replace(" ", "-", $var);
2
Utilisateur anonyme
 
Je viens de trouver http://cubiq.org/the-perfect-php-clean-url-generator et je dois dire que cela marche du tonnerre ! Merci pour votre aide !
1
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Cool =)
0
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Bonjour,
Montre-nous ton code avec str_replace pour savoir qu'est-ce qui ne va pas.
0
Utilisateur anonyme
 
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
0

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

Posez votre question
Utilisateur anonyme
 
Merci pour ton aide, je vais mettre en place ce que tu m'as donné :) Je trouve cependant la fonction pour supprimer les accents un peu lourdre et pas forcément complète (dans des cas exceptionnels). En attendant de trouver mieux, j'utiliserai ton code, merci :)
0
AssassinTourist Messages postés 6029 Date d'inscription   Statut Contributeur Dernière intervention   1 312
 
Cette méthode pour les accents est souvent utilisée, lourde ou non :$
0