URL Rewriting
Résolu
Utilisateur anonyme
-
AssassinTourist Messages postés 409 Date d'inscription Statut Contributeur Dernière intervention -
AssassinTourist Messages postés 409 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 !
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
-
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); -
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 !
-
Bonjour,
Montre-nous ton code avec str_replace pour savoir qu'est-ce qui ne va pas. -
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean); $clean = strtolower(trim($clean, '-')); -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 :)