URL Rewriting

Résolu/Fermé
Utilisateur anonyme - Modifié par hardrocky le 15/03/2012 à 00:28
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 - 19 mars 2012 à 17:03
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 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
15 mars 2012 à 14:52
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
19 mars 2012 à 16:55
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 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
19 mars 2012 à 17:03
Cool =)
0
AssassinTourist Messages postés 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
15 mars 2012 à 12:01
Bonjour,
Montre-nous ton code avec str_replace pour savoir qu'est-ce qui ne va pas.
0
Utilisateur anonyme
15 mars 2012 à 13:00
$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
15 mars 2012 à 16:40
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 5710 Date d'inscription lundi 16 janvier 2012 Statut Contributeur Dernière intervention 29 février 2024 1 310
15 mars 2012 à 16:45
Cette méthode pour les accents est souvent utilisée, lourde ou non :$
0