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 :

Traiter des caractères avant d'envoyer


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 81
    Points : 59
    Points
    59
    Par défaut Traiter des caractères avant d'envoyer
    Bonjour.
    Sur mon site de e-commerce, j'utilise le systeme de panier et de paiement paypal.
    Malheureusement j'ai un probleme avec le panier paypal : il me met des caracteres bizzares a la place des accents et apostrophes dans l'intitulé du produit.

    Ce que je voulais donc faire, c'est traiter ces caracteres spéciaux avant d'envoyer le produit dans le panier.

    On m'a conseillé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $str=stripslashes($str);
    $str=utf8_decode($str);
    $str=strtr($str, utf8_decode("ÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛàáäâèéëêìíïîòóöôùúüûÑñÇç·/_,:;"),"aaaaeeeeiiiioooouuuuaaaaeeeeiiiioooouuuunncc------");
    $str=preg_replace("/[^a-zA-Z0-9 ]/", '', $str);
    $str=preg_replace("/^\s+|\s+$/i", '', $str);
    $str=preg_replace("/\s+/", '-', $str)
    ?>
    Avec cette solution, le probleme c'est que du coup je champ "libellé produit" du panier est totalement vide.

    J'ai aussi essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $var = strtr($row_article['titre'],'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàâãäåçèéêëìíîï©£òóôõöùúûü~ÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaceeeeiiiioooooouuuuyyy'
    Mais cette fois-ci j'ai seulement la premiere lettre du produit qui s'affiche..

    Est ce que quelqu'un aurait une idée?

    Pour info, je traite dans un formulaire avant d'envoyer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="item_name" value="<?php echo $str['titre']; ?>">
    Toutes les idées sont les bienvenues.
    Merci de votre aide.

  2. #2
    Membre actif Avatar de Alshten
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2005
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 157
    Points : 233
    Points
    233
    Par défaut
    Personnellement j'avais trouvé cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function SupprimerAccents($str, $charset='utf-8')
    {
        $str = htmlentities($str, ENT_NOQUOTES, $charset);
     
        $str = preg_replace('#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#', '\1', $str);
        $str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. '&oelig;'
        $str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
        $str = preg_replace('/([[:punct:]])/', '', $str); // supprime les autres caractères
        $str = preg_replace('/([[:space:]])/', '-', $str); // supprime les autres caractères
     
        return strtolower($str);
    }
    Je l'avais un peu modifiée avant de l'intégrer à mon projet mais elle marchait très bien. Peut-être que tu pourrais l'adapter pour ton cas, en tout cas pour moi, la fonction strtr n'avais pas marché.

  3. #3
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    N'existe-t-il pas une solution plus simple,
    en se servant de la page 113
    du "guide d'intégration de paiements sur site marchand" paypal,
    qui explique comment définir le jeu de caractères (charset) ?
    Fred

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2009
    Messages : 81
    Points : 59
    Points
    59
    Par défaut
    Oui c'est pas faux.

    J'ai cherché plusieurs fois ce fameux "guide" et je viens de trouver le lien pour le télécharger.
    En effet j'ai trouvé ma réponse.
    En même temps je me suis fait indiquer comment traiter des caracteres avant envoie, ce poste n'aura donc pas été inutile.

    Merci a vous 2

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

Discussions similaires

  1. Envoyer des caractères spéciaux en SMS.
    Par kika10 dans le forum Mobiles
    Réponses: 2
    Dernier message: 27/08/2013, 18h39
  2. Des caractères ';' avant chaque tableau
    Par madina dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 12/07/2011, 11h17
  3. API pour traiter des chaines de caractère
    Par publicStaticVoidMain dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 01/02/2008, 00h18
  4. [Mail] Envoyé des caractères spéciaux par mail
    Par Oberown dans le forum Langage
    Réponses: 1
    Dernier message: 16/03/2006, 23h55

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