IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

htmlentities et str_replace inefficaces.. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut htmlentities et str_replace inefficaces..
    Bonjour,

    J'aimerais convertir des chaînes de caractères sorties d'un base mySQL au format utf8_unicode_ci . Ces chaînes sont susceptibles de contenir des guillemets simples et doubles. J'aimerais donc convertir ces caractères spéciaux en, respectivement, '´' et '"' .

    J'ai essayé d'utiliser la fonction htmlentities() sur ces chaînes, ce qui n'a rien changé. Aujourd'hui j'ai essayé de faire une fonction qui remplacent tous les caractères spéciaux sur ces chaïnes, sans plus de résultats.

    Mon en-tête html est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    	   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
            ....
        </head>
        ....
    </html>
    et voici la fonction ma fonction qui traite les chaînes (fonction récursive car les chaînes sont contenues dans un tableau à profondeur multiples) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function encode_html($tab)
    {
        $search = array('"', '\'');
        $replace = array ('&quot;','&acute;');
        $count = 0;
     
        foreach ($tab as $key => $value)
        {
            if (is_array($value))
                encode_html($value);
            else
            {
                $value = utf8_decode($value);
                $value = str_replace($search, $replace, $value, &$count);
            }
        }
        return $count;
    }
    La variable $count qui compte le nombre de remplacement effectués reste à zéro..

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Normalement htmlentities suffit si tu lui spécifies en deuxieme paramètre "ENT_QUOTES" genre htmlentities($var,ENT_QUOTES) va encoder les quotes.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    déjà essayé avec les paramètres optionnels.. pas mieux. J'ai essayé rajoutant le paramètre de jeu de caractères.. toujours rien!

    merci qd même

  4. #4
    Invité
    Invité(e)
    Par défaut
    Es-tu sûr d'avoir mis la bonne syntaxe ?

    htmlentities

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    merci pour vos suggestions !

    ce n'était pas la syntaxe sur cette fonction mais le fait que j'omettais de faire un addslashes avant l'enregistrement. Et pour corser le tout, le champ en question est un texte formaté formaté csv donc je ne pouvais pas faire ce que je voulais avec les codes html de caractères spéciaux.

    à vue de nez c'est rentré dans l'ordre !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 34
    Dernier message: 24/05/2006, 01h08
  2. [MySQL] Chaine tronquée apres htmlentities.
    Par castaka dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2005, 12h54
  3. Réponses: 6
    Dernier message: 01/02/2005, 20h02
  4. [String] équivalent htmlentities
    Par mousstik dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 29/12/2004, 14h26
  5. DbNavigator, rendre inefficace et visible, l'un des boutons
    Par Lucien dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/10/2004, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo