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

EDI, CMS, Outils, Scripts et API PHP Discussion :

API JSON et TEXTAREA


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut API JSON et TEXTAREA
    Bonjour.

    J'ai un formulaire avec un champ "Adresse" de type TEXTAREA. J'envoie l'ensemble du formulaire à mon API en PHP via les lignes JS (jQuery) suivantes :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    const oFormulaire = {
        "nom": $("#Nom").val(),
        "adresse": $("#Adresse").val().replace(/\n/g, "\\n").replace(/\&/g, "\\&").replace(/\r/g, "\\r").replace(/\t/g, "\\t").replace(/\f/g, "\\f")
    }
    $.ajax({
        type: "POST",
        url: sUrlApi,
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(oFormulaire)
      })
    Je récupère les données côté serveur dans un script PHP avec les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sDataIn = file_get_contents("php://input");
    $aDonnees = json_decode($sDataIn);
    Et je vérifie ce que contient le champ "Adresse" avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filter_var($aDonnees->adresse, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => "#^[a-zÀ-ÿ\-&\n\r\\ ]+$#i")))
    Lorsqu'il y a un retour à la ligne dans le champ TEXTAREA, fitler_var renvoie 'false' et je ne comprends pas pourquoi.
    Est-ce que j'ai raté quelque chose ? J'ai fait pas mal de recherches et d'essais, sans succès.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 668
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 668
    Par défaut
    Citation Envoyé par scrouet Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filter_var($aDonnees->adresse), FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => "#^[a-zÀ-ÿ\-&\n\r\\ ]+$#i")))
    la parenthèse fermante de l'appel à "filter_var" est mal placée. c'est un copié-collé de votre code ou c'est une faute de frappe dans votre message ?

  3. #3
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Citation Envoyé par mathieu Voir le message
    la parenthèse fermante de l'appel à "filter_var" est mal placée. c'est un copié-collé de votre code ou c'est une faute de frappe dans votre message ?
    C'est une erreur de copier-coller. Je viens de corriger.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 668
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 668
    Par défaut
    d'après mes tests, j'ai l'impression qu'il faut rajouté l'option "m" pour l'expression régulière. je n'ai pas compris pourquoi parce que d'après la documentation, cette option est déjà activée de base si elle n'est pas indiquée.
    https://www.php.net/manual/fr/refere....modifiers.php

    je ne suis pas sur que votre souci viennent de là donc je vous conseille de tester plusieurs textes valides et non valides pour vérifier cela.
    pour ma part les fonctions "filter_" ont souvent eu des résultats surprenants que se soit pour vérifier des adresses e-mail ou des textes donc j'ai fini par ne plus les utiliser et utiliser les fonctions "preg" directement :
    https://www.php.net/manual/fr/ref.pcre.php

  5. #5
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Bonjour.

    Même avec preg_match, ça ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/^[a-zÀ-ÿ\-&\n\r\\ ]+$/im", $Valeur)
    Pourtant, dans le cadre de mon test, le champ contient juste "f\ng".

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 668
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 668
    Par défaut
    je viens de comprendre que dans votre chaine de caractère, vous n'avez pas le retour à la ligne mais les caractère "\" et "n", c'est bien ça ?
    dans ce cas essayez cela : "#^[a-zÀ-ÿ\-&\n\r\\\\ ]+$#i".

    parce que php va d'abord convertir le "\\" en "\". donc si vous mettez "\\ " cela donnera "\ " dans la regex et cela est considéré comme l'espace.
    alors qu'en mettant "\\\\ " cela donnera "\\ " dans la regex et donc il y aura le caractère "\" ou le caractère " ".

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

Discussions similaires

  1. REST API JSON to SyncAdapter AbstractThreadedSyncAdapter
    Par andronull dans le forum Android
    Réponses: 1
    Dernier message: 27/02/2014, 19h14
  2. API JSON comment récupérer l'info ?
    Par krzysiu dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/11/2013, 17h49
  3. Impossibilité d'utiliser l'API JSON dans une servlet
    Par SpeedOverflow dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 21/12/2011, 09h40
  4. API JSON Lib - Erreur java.lang.NoSuchMethod
    Par Marvelll dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 29/01/2010, 11h04
  5. [Framework] API JSON
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 20/03/2006, 11h08

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