URL SEO friendly et codage de caractères (PHP)


doic
WRInaute passionné
WRInaute passionné
 
Messages: 1147
Inscription: 7 Nov 2003

URL SEO friendly et codage de caractères (PHP)

Message le Mer Mar 18, 2009 22:46

Hello,

J'ai une petite appli de création de contenu faite maison (en passant par FCK Editor).
J'aimerais générer des urls propres en me basant sur le titre de la page créée (comme les urls des posts WRI).

En théorie tout devrait marcher, mais les caractères spéciaux ne passent pas...
J'utilise cette fonction avant d'injecter les tirets et de traiter les doublons:
Code: Tout sélectionner
function normaliza($string){
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ';
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
    $string = utf8_decode($string);   
    $string = strtr($string, utf8_decode($a), $b);
    $string = strtolower($string);
    return utf8_encode($string);
}


Mais si je lui passe "Mémé aime les crêpes", j'obtiens "mr aime les crrs" :-(

La variable est passée en POST... vraiment je ne comprends pas...

sun location
WRInaute discret
WRInaute discret
 
Messages: 109
Inscription: 14 Déc 2006

Re: URL SEO friendly et codage de caractères (PHP)

Message le Mer Mar 18, 2009 23:06

Essaye d'utiliser des fonctions plus puissantes en terme de remplacement comme ereg_replace ou preg_replace !


doic
WRInaute passionné
WRInaute passionné
 
Messages: 1147
Inscription: 7 Nov 2003

Re: URL SEO friendly et codage de caractères (PHP)

Message le Mer Mar 18, 2009 23:31

Si tu as une idée bien précise, je suis à l'écoute ;-)


doic
WRInaute passionné
WRInaute passionné
 
Messages: 1147
Inscription: 7 Nov 2003

Re: URL SEO friendly et codage de caractères (PHP)

Message le Mer Mar 18, 2009 23:38

OK !

Après avoir testé toutes les possibilités, DANS MON CAS, voici la fonction qui marche:
Code: Tout sélectionner
function normaliza4($string){
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ';
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
    $string = $string;   
    $string = strtr($string, utf8_decode($a), $b);
    $string = strtolower($string);
    return utf8_encode($string);
}

Ce qui veut dire que la chaîne passée était bien en UTF-8 mais c'est le pattern $a qui ne l'était pas. Et forcément, encoder une chaîne UTF-8 en UTF-8 ça ne donne rien de bon...


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 0 invités