Bonjour,

Mes chers marketeux ont eu l'idée géniale de truffer les noms de produits de caractères spéciaux dans la BDD, en plus des accents j'ai le droit à de crochets des parenthèses de %, ®, ™ j'en passe et des meilleurs ...
Sauf que maintenant ils me demandent de faire de l'url rewriting sur la base des noms de produits et je dois donc les débarrasser des caractères accentués et remplacer les caractères spéciaux...

J'y suis arrivé sans trop de mal avec strtr pour les accents et certains caractères comme "%" replacé par -pour-cent- , "+" remplacé par -plus-

mais curieusement ® est bien supprimé MAIS ™ ne l'est pas ...

En fait dans la liste ci-dessous seul le premier est remplacé ! Un idée du pourquoi ???

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
function clean_url($s){
    $chars = array(
    // Caracteres a supprimer du nom de produit dans de l'url
    "®" => '' , 
    '™' => '', 
    "'" => '-',
    "’" => '-', 
    "´" => '-' 
    );
 
     $s=strtr($s, $chars);
     return  $s;
}
Je suis en 100% pur utf-8 de la base à la table en passant par la connexion et aux fichiers php

Pour le moment je pallie à ce défaut avec un preg_replace pour les caractères éludés par le strtr, mais je suis curieux d'avoir une explication ...