michmuch51 Posté 25 Mars 2005 Posté 25 Mars 2005 Bonjour, je souhaterai connaitre la fonction pour virer les caractères du genre "+" ou "%" dans mes url exemple ici: -http://www.terroirexperience.com/annuaire-vin/Vin++Vall%E9e+du+Rh%F4ne-16.htm C'est à l'origine du rewriting et mon url est générée par cette fonction: RewriteRule ^(.*)-([0-9]+)\.htm$ /annuaire-vin/index.php?cat_id=$2&title=$1 [L] Merci parce que là je galère
Ganf Posté 25 Mars 2005 Posté 25 Mars 2005 Bonjour, je souhaterai connaitre la fonction pour virer les caractères du genre "+" ou "%" urldecode() Ces %xx sont la manière normale de coder un accent ou un caractère spécial dans une URL. Le plus code lui l'espace. Tu as fait un lien avec des caractères non ascii. Tu n'en as normalement pas le droit, c'est théoriquement incorrect. C'est ton navigateur qui, conciliant, a intercepté le problème et a converti les caractères accentués en %xx Mettre les caractères accentués dans les liens "marche" souvent mais devrait être évité. Suivant le codage caractère en cours, suivant celui de la page, suivant le navigateur, le même caractère risque de se convertir en des %xx différents (et donc ne pas donner la bonne page). mon url est générée par cette fonction: Sauf erreur de ma part ton rewrite ne génère pas l'url, c'est tout le contraire, il l'intercepte et l'interprête.
michmuch51 Posté 25 Mars 2005 Auteur Posté 25 Mars 2005 (modifié) Salut Ganf si je rajoute la fonction urldecode() à mes liens alors que je suis déjà en urlencode() ca donne ca http://www.terroirexperience.com/annuaire-vin/Vin%20%20Vall%E9e%20du%20Rh%F4ne-16.htm Donc inutile de te dire que le serveur m'envoi une bad request... <edit>je cherche surtout à remplacer mes "+" par des "-" et %E9 par "e"</edit> Modifié 25 Mars 2005 par michmuch51
Ganf Posté 25 Mars 2005 Posté 25 Mars 2005 Salut Ganf si je rajoute la fonction urldecode() à mes liens alors que je suis déjà en urlencode() Non non, ce n'était pas pour chaîner les deux à la suite dans la page qui créé les liens que je te disais ça, sinon il n'y a effectivement aucun intérêt (ça revient grosso modo au même) <edit>je cherche surtout à remplacer mes "+" par des "-" et %E9 par "e"</edit> ok, j'ai mal compris la question alors. On efface tout et on recommence. Il n'y a à ma connaissance aucune fonction native pour faire ça. Si tu as un nombre de caractères spéciaux limités tu peux les lister et faire un str_replace. Sinon d'autres personnes ont déjà fait des str_replace complets (avec les majuscules accentées et tous les caractères zarb), tu pourras les retrouver sur le net. Il te faudra juste rajouter les espaces si tu veux les convertir en tiret Une autre option bien lourde c'est convertir les accents et caractères spéciaux en entités html. "é" deviendra "&eactue;" et ainsi de suite. Sauf quelques exceptions, la première lettre après le & correspond à ce que tu cherche à mettre en remplacement. Tu peux t'en servir pour reconstruire ton texte. Donc : convertir à la main les exceptions et les espaces, convertir le reste en entité, rechercher toutes les entités pour les reconvertir à leur tour en utilisant la première lettre de l'entité quand c'est une entité non numérique.
michmuch51 Posté 25 Mars 2005 Auteur Posté 25 Mars 2005 Si tu as un nombre de caractères spéciaux limités tu peux les lister et faire un str_replace J'étais déjà sur cette piste, mais il est vrai que je ne l'ai jamais utilisé donc je crois que je vais devoir m'y mettre (encore quelques heures de taffes pour comprendre) En tout cas merci Ganf ...
michmuch51 Posté 27 Mars 2005 Auteur Posté 27 Mars 2005 bon ok, je capitule, je n'y arrive pas Un petit tuto ou un exemple seraient les bien venus ...
lupucide Posté 27 Mars 2005 Posté 27 Mars 2005 function clean_url($url) { $tab = array(' ', '&'); $clean = str_replace($tab, '-', $url); return strtolower(utf8_encode($clean));} J'utilise cette fonction pour l'upload d'images. Les espaces et & sont remplacés par des tirets.
Dash Posté 27 Mars 2005 Posté 27 Mars 2005 bon ok, je capitule, je n'y arrive pas Un petit tuto ou un exemple seraient les bien venus ... <{POST_SNAPBACK}> Il y a autant de tutoriaux que de codes sources disponibles. Au hasard, c'est interessant de voir par exemple comment des applications comme DotClear generent a la volee des URL "propres", cad sans caracteres accentues ou exotiques. function str2url($str){ if ($this->encoding == 'UTF-8') { $str = $this->removeEntities(utf8_decode($str)); } else { $str = $this->removeEntities($str); } $str = strtr($str, "ÀÁÂÃÄÅàáâãäåÇçÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", "AAAAAAaaaaaaCcOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNn"); $str = preg_replace('/[^a-z0-9_-\s]/', '', strtolower($str)); $str = preg_replace('/[\s]+/', ' ', trim($str)); $res = str_replace(' ', '-', $str); return $res; }
Developer Posté 27 Mars 2005 Posté 27 Mars 2005 Salut Pourquoi tu n'utilise pas les expressions régulières ? Des exemples de sources/fonctions: http://www.expreg.com/liresource.php?type=URL Lien générale pour apprendre: http://www.expreg.com/index.php Bonne chance! Ze'Developer.
xpatval Posté 27 Mars 2005 Posté 27 Mars 2005 (modifié) Bonjour,soir, Bonjour, je souhaterai connaitre la fonction pour virer les caractères du genre "+" ou "%" dans mes url exemple ici: url à changer Pourquoi en arrives-tu à avoir ce genre d'url ? Je veux dire par là sur quel principe sont-elles construites ? xpatval Modifié 27 Mars 2005 par xpatval
Developer Posté 27 Mars 2005 Posté 27 Mars 2005 Genre de recherche par exemple,xpatval. Regarde sur google le genre d'url quand tu fais une recherche ! Les paramètres sont passès par URL !
michmuch51 Posté 28 Mars 2005 Auteur Posté 28 Mars 2005 Merci à tous... La soluce etait pas si loin en effet... j'ai utilisé: ereg_replace() Tres pratique et maintenant j'ai des url tres propres Résolu Encore merci pour votre aide...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant