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

WRInaute impliqué
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:
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...
 
WRInaute impliqué
OK !

Après avoir testé toutes les possibilités, DANS MON CAS, voici la fonction qui marche:
Code:
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...
 
Discussions similaires
Haut