Problème fonction URL compatible.

Eremes
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 12
Inscription: 9 Juin 2010

Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 2:38

Bonsoir.

Voilà, sur mon forum, j'ai récemment fait en sorte que l'url des topics aient le titre du topic dans l'URL. Le problème, c'est que les lettre a accents ne sont pas transformées en lettres simples mais sont remplacées par des tirets. :(

Voilà la fonction que j'utilise :

Code: Tout sélectionner
   // Formate un texte pour le transformer en URL-compatible
   function formatLink($string,$majuscules=false) {
   $string = strtr($string,
        'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ?$,&:()!{}."§_#=/\\;°',
        'szszyaaaaaaceeeeiiiinoooooouuuuyaaaaaaceeeeiiiinoooooouuuuyy---------------------');
   $string = strtr($string,
        array('Þ' => 'TH', 'þ' => 'th', 'Ð' => 'DH', 'ð' => 'dh', '@'=>'-at-',
          'ß' => 'ss', 'Œ' => 'OE', 'œ' => 'oe', 'Æ' => 'AE',
          'æ' => 'ae', 'µ' => 'u', '+' => '-', 'amp' => 'et'));
    $string = preg_replace('|[^A-Z-]|i', '-', $string);
    $string = preg_replace('|[\-]+|i', '-', $string);
    $string = preg_replace('|-$|i', '', $string);
    if(empty($string)) return '-';
    return ($majuscules?$string:strtolower($string));
   }


Des idées ? :(

merci !


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 3:44

tu as peut-etre un problème autre part comme au niveau de ton fichier .htaccess, tu peux mettre une url qui plante pour voir ? car j'ai testé ta fonction et les accents semblent etre correctement gérer
Code: Tout sélectionner
<?php echo formatLink("hello_Mr+l'éléphant"); ?>
retourne bien :  hello-mr-l-elephant

Eremes
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 12
Inscription: 9 Juin 2010

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 4:17

Ok merci pour ta réponse.

Un exemple : topic-1795-1-r-gle-du-forum-de-pr-sentation.html

Peut-être que ça vient de l'encodage en UTF-8 ?

Sinon la ligne de mon .htaccess qui gère ça est :
Code: Tout sélectionner
RewriteRule ^(.*)-([0-9]+)-([0-9]+)-([a-z0-9A-Z-]+)\.html$ /$1.php?id=$2&page=$3&titre=$4 [L]


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 5:27

ca doit venir de l'encodage en utf8, re encode en latin, donc decode l'utf8 :)
$url = utf8_decode($url);

tu peux également le mettre directement au début de ta fonction

function formatLink($string,$majuscules=false) {
$string = utf8_decode($string);
...

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 8:08

oui c'est un problème typique d'encodage ou les lettres accentuées sont représentées par un ? et donc remplacées par un - (la fonction fonctionne donc bien)

la solution de KOogar devrait corriger le problème, tu peux aussi forcer la conversion lors de la connexion à la base de données ça évite de se poser trop de questions, mais ça va influer sur tout ton forum et donc tu risques d'avoir des soucis ailleurs..

Eremes
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 12
Inscription: 9 Juin 2010

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 16:04

Je vais essayer, mais il me semble avoir déjà essayé, enfin on verra.

Merci pour vos réponses ! :)

Edit : Rah ça marche toujours pas, j'ai placé
Code: Tout sélectionner
$string = utf8_decode($string);
au début de la fonction, sans succès ...

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 16:21

as tu essayé de faire un echo de string avant tout traitement ?

il est possible que ta chaine "ŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ?$,&:()!{}."§_#=/\\;°" aussi soit mal encodée, peut-etre qu'un utf8_decode('ŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ?$,&:()!{}."§_#=/\\;°") dans le strstr peut regler la chose..

Eremes
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 12
Inscription: 9 Juin 2010

Re: Problème fonction URL compatible.

Message le Mer Aoû 18, 2010 16:29

Merci Sullyvan ! Ca marche a présent, j'ai mis un utf8_decode au début des caractères spéciaux :)

Merci pour ton aide :)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité