Aller au contenu

Sujets conseillés

Posté

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

Posté

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));

}

Posté (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é par Ryo
Posté

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.

Posté (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 ? :

<?php

function smarty_modifier_sanitize($string, $spacify_char = ' ')
{
return preg_replace('!\W!','-',$string);
}



?>

Modifié par Dax

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...