Dax Posté 4 Septembre 2007 Posté 4 Septembre 2007 Bonjour à tous, voilà j'ai un souci avec certains caractères tels que le é, è, à , ils sont automatiquement remplacés par un - et donc çà coupe les mots dans mes urls. Quelqu'un pourrait-il me dire comment je peux faire pour qu'ils soient remplacés par des e et des a sans accents ? Merci d'avance Voici mon htaccess : RewriteEngine On RewriteRule ^ad_([0-9]+)_(.*).html detail.php?id=$1 RewriteRule ^cat_([0-9]+)_(.*).html index.php?catid=$1 RewriteRule ^user_([0-9]+)_(.*).html user_info.php?user_id=$1 RewriteRule ^ratemember_([0-9]+)_(.*).html rate_member.php?user_id=$1 RewriteRule ^contact_([0-9]+)_([0-9]+)_(.*).html detail.php?id=$1&user_id=$2&contact=1 RewriteRule ^rate_([0-9]+).html rate.php?id=$1 RewriteRule ^largepicture_([0-9]+).html large_picture.php?id=$1 RewriteRule ^tellafriend_([0-9]+).html detail.php?id=$1&tellafriend=1 RewriteRule ^print_([0-9]+).html detail.php?id=$1&print=1 RewriteRule ^removefav_([0-9]+).html fav_popup.php?remove_fav=$1 RewriteRule ^addfav_([0-9]+).html fav_popup.php?add_fav=$1 RewriteRule ^trm_(.*).html info.php?what=terms RewriteRule ^ab_(.*).html info.php?what=aboutus RewriteRule ^adv_(.*).html info.php?what=advertise RewriteRule ^hlp_(.*).html info.php?what=help RewriteRule ^rss_([0-9]+).html detail.php?id=$1
Dax Posté 4 Septembre 2007 Auteur Posté 4 Septembre 2007 J'ai trouvé dans divers forums ces fonctions mais je ne sais pas où les placer, directement dans le htaccess cause une erreur 500 1ère solution: $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; $titre_url = strtr($titre,$accents,$ssaccents); $in = array(' ', '?', '!', '.', ',', ':', "'", '&', '(', ')'); $out = array('-', '', '', '', '', '', '-', 'et', '', ''); $titre_url = str_replace($in, $out, $titre_url); 2ème solution: function suppaccents($mot){ $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; return(strtr($mot,$accents,$ssaccents)); }
Ryo Posté 4 Septembre 2007 Posté 4 Septembre 2007 (modifié) Bonjour, tu peux utiliser l'un des deux code oui (le 1er me semble plus complet). Pour l'utiliser, il faut que tu le place dans le code de tes pages php là ou tes url sont créées. Modifié 4 Septembre 2007 par Ryo
captain_torche Posté 4 Septembre 2007 Posté 4 Septembre 2007 On peut aussi faire un code plus joli, et éminément plus pratique du genre : function enleve_accents($chaine) { $reg = '/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/'; return preg_replace($reg, '\1', htmlentities($chaine)); } Dans le principe : - le htmlentities() retournera les équivalents HTML des lettres eccentuées (é pour é, À pour À ...) - on isole la lettre ciblée avec l'expression régulière, qui part du principe qu'une lettre accentuée est forcément de la forme & + lettre + nom de l'accent +; - on retourne le texte original débarassé de ses accents L'avantage est qu'il fonctionnera sur tout type de lettre accentuée non prévue dans la liste d'origine.
Dax Posté 4 Septembre 2007 Auteur Posté 4 Septembre 2007 (modifié) Merci à tous les deux pour vos réponses . il faut que tu le place dans le code de tes pages php là ou tes url sont créées. Est-ce que c'est dans un fichier du genre functions.php ou bien dans les fichiers où j'ai fais mes modifs, exemple de lignes modifiées (en gras): {if $category.SUBCATLIST} {foreach name=sub item=sub from=$category.SUBCATLIST} <a href="cat_{$sub.CATID}_{$sub.CATNAME|sanitize}.html" title="{$sub.CATNAME}">{$sub.CATNAME}</a> <small class="littleGray">{$sub.NUM}</small>{if !$smarty.foreach.sub.last},{/if} {/foreach} {elseif $category.CATDESCRIPTION} <small>{$category.CATDESCRIPTION}</small> {/if} Voici le code du fichier modifier.sanitise.php que j'ai aussi ajouter à mon script pour faire fonctionner le rewriting, est-ce là dedans qu'il faut mettre le code ? : <?phpfunction smarty_modifier_sanitize($string, $spacify_char = ' '){return preg_replace('!\W!','-',$string);}?> Modifié 4 Septembre 2007 par Dax
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant