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 :

[Système] Contrôle d'un textarea à cause des retours chariot


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Par défaut [Système] Contrôle d'un textarea à cause des retours chariot
    Bonjour,

    Je programme en PHP4,

    Je rencontre un problème avec ma fonction de contrôle ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function controle_texte($ch)
    {
     $test='aâäàbcdeéèêëfghiîïjklmnoôöpqrstuûüvwxy-!?& z';
     
     for ($i=0; $i<strlen($ch); $i++)
      {
         if (!ereg($ch[$i], $test))
        {
          return false;
        }
      }
      return true;
    }
    Lorsque $ch contient un retour chariot celle-ci me renvoie false.
    Ma question est : comment je peux insérer ce retour chariot dans $test comme je l'ai fait pour les autres caractère? Est-ce possible?

    J'ai essayé la fonction chop() sur $ch mais sans résultat, de plus j'aimerais garder ces retours chariot.

    Merci pour votre réponse.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    En ajoutant dans le motif \r et \n (il faudra utiliser des doubles quotes comme délimiteur de chaîne de caractères) ?

    Les fonctions ereg* sont dépréciées, je vous invite sérieusement à vous tourner vers l'extension PCRE qui est bien plus souple et performante : elle prend en charge les locales et offre des raccourcis dont par exemple \s, qui correspond à tout caractère blanc, ou encore des options.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Par défaut
    Bonsoir, merci pour ta réponse Julp

    Non, en mettant '\n' dans la variable $test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $test="aâäàbcdeéèêëfghiîïjklmnoôöpqrstuûüvwxy-!?& z\n";
    (avec les simples ou double cotes) la fonction renvoie false si $ch contient un retour chariot...

    Je regarde les expressions régulières...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Cela dépend de votre système : un saut de ligne sous windows est \r\n et non \n seul !

    Je n'y avais pas prêté attention mais il est inutile de parcourir la chaîne et de faire un test caractère par caractère à l'aide d'une expression régulière ! Ceci suffirait, je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function controle_texte($ch)
    {
        return preg_match('~^[\w\r\n !?&-]*$~', $ch);
    }
    (non testé)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour tes réponses Julp. Le code fonctionne. Placer '\r\n' dans $test (chaine entre double cote) fait fonctionner la fonction comme prévu.

    J'ai regardé les cours que tu m'as conseillé, ils sont bien et j'y reviendrai.

    Ton code est ok aussi, je ne l'ai pas testé dans toutes les conditions car je ne connais pas les expressions régulières.

    Je finis de coder en PHP4 et je passerai le tout en PHP5 quand ça sera fini... Il parait que les modifications à effectuer sont infimes... (j'espère! Mais j'ai entière confiance aux développeurs de ce langage)

    Bonne continuation à tous et a+

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

Discussions similaires

  1. mailto : comment intégrer des retours chariot
    Par Harry dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 18/07/2006, 15h06
  2. Fonction encodage des retour chariot
    Par philippe123 dans le forum Langage
    Réponses: 2
    Dernier message: 20/05/2006, 16h57
  3. [VB6]Vider la memoire des retours chariot
    Par jojo-la-praline dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/03/2006, 00h30
  4. Mettre des retours chariot dans un fichier
    Par Isa31 dans le forum Langage
    Réponses: 8
    Dernier message: 02/03/2006, 17h13
  5. [RegEx] Mettre des <li> a la place des retour chariot depuis B
    Par Death83 dans le forum Langage
    Réponses: 19
    Dernier message: 20/01/2006, 02h28

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