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

Langage PHP Discussion :

fonction qui apprecie pas les é [Fait]


Sujet :

Langage PHP

  1. #1
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut fonction qui apprecie pas les é
    bonjour tous le monde!


    argh! ce matin, je me connecte, et que vois je ? ma chere fonction toute bebete qui sert a couper les mots


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function cut_word($texte, $nb)
    {
    	return (strlen($texte) > $nb) ? substr($texte, 0, $nb).'...' : $texte;
    }


    renvoie un carré blanc quand il s'agit d'un é!!!!!

    et pourtant, mes é sont bien intégrés a ma page!


    les é de ma bdd sont sous cette forme : é et je suis en content="text/html; charset=utf-8"


    ????? une idee siouplais?

    merci bien!

  2. #2
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Il faut que tu vérifies que ta base de donnée, table et colonne soit configuré pour l'utf8.

    Ensuite il faut que les données qui y sont stockés soit sous le même format.

    ++

  3. #3
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    aïe !


    merci beaucoup!

    mais je crois que mon truc bug!

    regardez cette image a ce lien cliquez sur la photo pour agrandir

    le premier champs coloré en gris que vous pouvez voir, c'est la que ca bug :

    les 6 premieres entrées bugent, mais pas la septieme?????!



    SORCELLERIE!

  4. #4
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    À mon avis, les données contenu en DB ne sont pas au format UTF8.
    Si table et colonne sont définis dans ce format, essaie de mettre à jour manuellement et directement dans la table (avec PHPMyAdmin) l'un des champs qui pose problème. Ensuite réaffiche le résultat.

  5. #5
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    arf!

    c'est ce que j'ai fais!


    rien a y faire!

    je mets manuellement dans ma bdd les é....

    graouf! ca marche pas!

    données corrompues?

  6. #6
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    EUhhh non!

    Si ta table et colonne sont correctement défnies... mets à jour en indiquant les é,è,...

    Ce document pourrait t'intéresser

    ++

  7. #7
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    atta je sais!!!! serieux!!!!


    regardes : dans ma bdd, les é sont traduit par é

    et ma fonction cut_word prends les x premieres lettres et les affiches...


    mais si ca prends -imaginons- les 6 premieres lettres de oublié -a savoir oublié,


    ca va prendre.... =======> oubliÃ.... PAS é mais uniquement à !!!!!!



    comment faire pour dire a ma fonction de prendre é en entier quand ca s'arrete sur à ?




    merci beaucoup!!!!

  8. #8
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Bonjour et pourquoi pas contourner le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function cut_word($texte, $nb)
    {
            $texte=ereg_replace("é","é",$texte);
    	return (strlen($texte) > $nb) ? substr($texte, 0, $nb).'...' : $texte;
    }
    Mais sinon tu pourrais carrément créer une autre fonction changeant les caractère bizarres en simple "é" ou autre, et tu l'appel au début de ta fonction : cut_word

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Ca ne sert à rien de bidouiller pour que ta fonction prenne les deux, demain ce sera une nouvelle variante, et tu vas passer du temps à développer une fonction usine à gaz.

    Il vaut mieux résoudre le problème des encodages directement.

    D'ailleurs à ce sujet, vérifie dans ton éditeur de texte de quel manière ton code source est encodé.

    J'ai déjà eu des surprises avec ça de mon côté: tout était bon côté base de données et html dans le navigateur, mais le code source avait un encodage à deux balles et je récupérais des caractères bizarres.

    defcon_suny> Excellent ton lien, je bookmarke.

  10. #10
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    merci bien pour ta fonction, mais ca change rien

    je comprends pas, pourtant j'ai c/c mais les é ne s'affichent toujours pas sous cette fonction...


    on est proche!!!!




    *.Har(d)t dsl, j'avais pas vu, mais vu que j'ai pas la main mise sur la bdd, je peux pas faire grand chose a part esquiver le probleme.

    si je reussis a l'esquiver, ca peut etre guenial!!!!

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function cut_word($texte, $nb)
    {
    	return (strlen($texte) > $nb) ? utf8_encode((substr(utf8_decode($texte), 0, $nb).'...') : $texte;
    }

  12. #12
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut




    Z ETES LES MEILLEURS!!!!!!!




    IT S WORKIIIIIIIIIIIIIIING





    MERCI INFINIMENT!!!!!!!



    alors la, par contre, j'aimerais qu'on m'explique deux choses siouplais :

    -que fais EXACTEMENT cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    utf8_encode((substr(utf8_decode($texte), 0, $nb).'...'))
    et pourquoi mon truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function cut_word($texte, $nb)
    {
     
     
    if((strlen($texte) > $nb))
    {
    if(preg_match("#Ã$#",  substr($texte, 0, $nb)))
    $nb=$nb+2;
    }
    	return (strlen($texte) > $nb) ? substr($texte, 0, $nb).'...' : $texte;
    }

    et bah il marchait pas ? le principe etait pourtant simple : si le dernier caractere coupé egalait à , et bien il coupait une lettre plus tard, ce qui lui aurait permis de garder é




    en tout les cas, merci beaucoup, ca fait deja pas mal de temps qu'on me repond sur ce forum. Super sympa tous

  13. #13
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Si avec la fonction contenant les utf8_x ca marche c'est que tu as effectivement un souçis d'encodage quelque part.
    Fichier ou bdd mais il y'a un soucis.

    Et pour ta fonction de découpe , privilégie mb_strlen plutot que strlen sinon tu risques de te retrouver avec des résultats érroné

  14. #14
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Je ne sais pas si tu as lu le lien que j'ai cité plus haut mais voici le dernier chapitre :
    Reconnaissance rapide des problèmes d'affichage UTF-8 ISO

    Si la page affiche des caractères de ce type : "é", "î", "Ã", ...
    => Les données ont été enregistrées au format UTF-8, et le navigateur les affiche en pensant avoir affaire à de l'ISO.

    Si la page affiche des caractères de ce type : "�"
    => Les données ont été enregistrées au format ISO, et le navigateur les affiche en pensant avoir affaire à de l'UTF-8.

    Si les données sont codées en dur dans la page, voir l'encodage de l'éditeur de texte, l'header apache et la balise meta "charset".
    Si les données proviennent de la base, vérifier le format de stockage et les méthodes de lecture et d'insertion (SET NAMES et charset).
    Si les données proviennent de l'extérieur (web services, rss, ...), penser à convertir les chaînes de caractère (utf8_encode-decode et fonctions du module iconv).
    Je te laisse en tirer les conclusions... surtout sur les solutions à deux balles qui servent à coller une rustine quand faut changer le pneu...

    ++

  15. #15
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut
    merci bien!

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/10/2011, 19h03
  2. fonction qui regarde si les champs sont remplis
    Par esther60 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/05/2008, 08h55
  3. Réponses: 1
    Dernier message: 02/05/2008, 20h34
  4. Réponses: 6
    Dernier message: 30/01/2008, 20h46
  5. Réponses: 1
    Dernier message: 24/10/2006, 15h59

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