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 :

Récupérer un caractère dans une chaine


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut Récupérer un caractère dans une chaine
    Bonjour,

    Je souhaiterais récupérer des chaines provenant d'une base de données pour les afficher, pour cela je fais passer mes chaines par la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function decoder($texte){
            $texte = utf8_decode($texte); // converti en iso-8859-1
            $texte = stripslashes($texte); // élimine les anti-slashs d'échappement
            $texte = nl2br($texte); // converti les retours  en <br />
            $texte = trim($texte); // élimine les '\n', '\r', '\t' etc
            return $texte;
    }
    Le problème est que dès que je rencontre un caractère '
    et bien je n'ai pas le reste de la chaine ... savez vous comment les prendre en compte ... ?

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Que vaut $texte avant de passer par ta fonction ?

    As-tu la main sur l'enregistrement des données dans la base ? Parce que je ne vois pas pourquoi tu es obligé de faire un stripslashes sur ton texte, c'est que les données n'ont pas été stockées correctement dans ta base...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Mon problème est que je récupère correctement une chaine de ma base, par exemple : "Ingénieurs d'étude .blabla ...".
    Le problème, c'est que lorsque je récupère cette chaine via mon site flash,
    il me faut de l'html avec vérification des caractères spéciaux. Par exemple, é, se traduit par ? pour l'instant et à partir du ', plus rien ne s'affiche...

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonjour,

    Deux fonctions qui te raviront :

    _addslashes

    _ stripslashes

    Tu utilises déjà Stripslashes mais si tu n'as pas fait d'addslashes avant...

    Et puis, à quel moment n'as-tu pas la chaîne entière?

    Sinon...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv = "content-type" content = "text/html; charset=ISO-8559-1" /> <!--Rendre de manière lisible toute les caractères accentués et spéciaux-->

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Non, le fait d'avoir rajouté addSlach n'a rien changé...
    En fait, dès que j'ai un caractère accentué, il n'est pas interprété (caractère carré ou ? à la place ) et si il y a un caractère ' (comme dans j'ai), et bien tout ce qui est à partir du ' n'est plus du tout pris en compte....

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonjour,
    Pour tes caractères spéciaux, c'est au niveau de l'encodage que ça se passe.

    As-tu essayer d'utiliser la meta? Y-a-t-il eu une différence?


    Testes ceci et renvoies nous le résultat :
    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
    function decoder($texte){
            echo "~~~<br />Valeur à l'entrée de la fonction : ".$texte."~~~";
     
            $texte = utf8_decode($texte); // converti en iso-8859-1
            echo "~~~<br />Valeur après utf8 : ".$texte."~~~";
     
            $texte = stripslashes($texte); // élimine les anti-slashs d'échappement
            echo "~~~<br />Valeur sans les slashes : ".$texte."~~~";
     
            $texte = nl2br($texte); // converti les retours  en <br />
            echo "~~~<br />Valeur avec retour chariots : ".$texte."~~~";
     
            $texte = trim($texte); // élimine les '\n', '\r', '\t' etc
            echo "~~~<br />Valeur finale : ".$texte."~~~";
     
            return $texte;
    }
    Ceci, c'est une procédure de base que tu appliques quand tu souhaites débugger en interne ton code. Que tu souhaites savoir où ça ne fonctionne pas.

    Ce n'est pas une méthode basée sur la théorie et le fonctionnement pur des fonctions mais sur la pratique de "je teste pour voir si ça passe".

    Ce n'est pas une méthode super mais elle peut permettre de comprendre son erreur.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Ben le problème, c'est que je teste d'abord mon script php. Et en fait, si je laisse mon texte sans lui appliquer aucun traitement, il m'affiche correctement la chaine (c'est celle que je récupere de ma base de donnée et elle est nikel).
    Mais des que j'applique ces fonctions, cela modifie ma chaine et elle ne s'affiche pas correctement.
    Au final, meme sans rien changer quand la chaine est nikel, sur mon application en flash j'ai des carrés à la place des é et dès qu'il y a ', plus rien de la suite ne s'affiche.

  8. #8
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Testes ceci et renvoies nous le résultat :
    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
    function decoder($texte){
            echo "~~~<br />Valeur à l'entrée de la fonction : ".$texte."~~~";
     
            $texte = utf8_decode($texte); // converti en iso-8859-1
            echo "~~~<br />Valeur après utf8 : ".$texte."~~~";
     
            $texte = stripslashes($texte); // élimine les anti-slashs d'échappement
            echo "~~~<br />Valeur sans les slashes : ".$texte."~~~";
     
            $texte = nl2br($texte); // converti les retours  en <br />
            echo "~~~<br />Valeur avec retour chariots : ".$texte."~~~";
     
            $texte = trim($texte); // élimine les '\n', '\r', '\t' etc
            echo "~~~<br />Valeur finale : ".$texte."~~~";
     
            return $texte;
    }

    Autrement dit, j'aimerai bien savoir l'état des chaînes qu'il te retourne. Non pas l'interprétation que tu en fais.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    oups pardon, j'avais pas vu que tu voulais le résultats :
    voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    --avant modif =Ingénieur d’étude .NET~~~
    Valeur après utf8 : Ing?eur d’?de .NET~~~~~~
    Valeur sans les slashes : Ing?eur d’?de .NET~~~~~~
    Valeur avec retour chariots : Ing?eur d’?de .NET~~~~~~
    Valeur finale : Ing?eur d’?de .NET~~~

  10. #10
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Si tu as utilisé la balise meta que je t'ai fournie précédemment, ta fonction utf8_decode() n'est plus utile.

    C'est cette fonction qui rend ta chaîne de caractères inexploitable.

    Cependant, tu remarqueras également que ta variable texte n'est pas tronquée après les simples quote.


    Autrement dit, supprime ton encodage via la fonction php et regarde le résultat que te retournera le petit test d'affichage des différents états de ta variable.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    Il y a un truc que je ne comprend pas :
    Mon site flash a juste besoin de recevoir comme réponse de mon script php quelque chose de la forme :
    var=valeur de la var&uneAutreVar=autre valeur de la var&...

    Le fait est que le flash ne peut traiter que les caractères en utf8.
    Donc quand je teste mon script php et que je vois la chaine apparaitre visiblement, je ne comprends pas pourquoi ensuite, lorsque le site en flash la réceptionne, il n'arrive pas à l'écrire correctement, pour lui les caractères ne sont déjà plus comphréhensible.
    en fait, ce que je veux dire, c'est que pour tracer justement, je vois ce qu'ecrit (echo) mon script php. Et dans flash, je prends la variable telles qu'elle et je l'affiche, et là elle est différente... mais je ne peux rien tracer d'autre entre... ?

  12. #12
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Je ne suis pas une spécialiste Flash et à vrai dire, je n'ai aucune connaissance dans ce domaine.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Points : 109
    Points
    109
    Par défaut
    C'est pas grave. Je te remercie, c'est déjà super gentil de tenter de m'aider.
    Je t'avoue que moi non, plus. J'ai appris la programmation flash de manière express, et j'avoue avoir quelque soucis de comphrésion. surtout qu'il ne se passe pas la même chose en local et sur un herbergeur...
    Je vais tenter un forum pure flash... qui sait

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/08/2008, 09h58
  2. [RegEx] comment récupérer un lien dans une chaine de caractère
    Par matonisuka dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2007, 15h36
  3. [VS.net] Vérifier le présence d'un caractère dans une chaine
    Par arnolem dans le forum Windows Forms
    Réponses: 15
    Dernier message: 10/09/2005, 15h19
  4. Recuper un caractère dans une chaine. (novice)
    Par Thierry8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/08/2005, 09h07
  5. Réponses: 8
    Dernier message: 08/06/2004, 01h29

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