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

JavaScript Discussion :

Convertir des \n en <br />


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut Convertir des \n en <br />
    Bonjour bonjour,

    j'ai un petit problème que je n'arrive pas à résoudre et je ne comprends pas pourquoi. J'écrit quelque chose dans une textarea et j'aimerais l'afficher dans un div. Jusque la pas de souci. Le problème c'est que quand j'essaie de convertir les retours à la ligne du textarea en <br />, ça me converti le premier, mais pas les suivants.

    Voila la fonction que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function nl2br(str) 
    {
        return str.replace('\n', '<br />\n');
    }
    et quand je tappe dans textarea ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    salut
    comment
    tu 
    va ?
    ça me donne le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    salut<br />
    comment
    tu 
    va ?
    comme on peut le voir il a mis un <br> que devant le 1er retour à la ligne.

    est-ce que quelqu'un saurait me dire ou est le problème ?

    merci d'avance pour votre aide !!

  2. #2
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /**
     * Remplace les changements de ligne du texte
     * Paramètre : string str Chaîne à traiter
     **/
    function nl2br(str) {
      return str.replace(array("\r\n", "\r", "\n"), "<br>\n", str);
    }
    Cependant, je te conseille si possible de le faire à l'avance en PHP avec une fonction très similaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /**
     * Remplace les changements de ligne du texte
     * Paramètre : string $str Chaîne à traiter
     **/
    function nl2br($str) {
      return str_replace(array("\r\n", "\r", "\n"), "<br>\n", $str);
    }

  3. #3
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    merci pour ton aide.

    je peux pas le faire en php parce que c'est pour faire de la prévisualisation, donc je passe pas par le serveur. En fait c'est pour faire un "editeur" wysiwyg. Pour le moment je le fait écrire dans un textarea et en affichant la prévisualisant dans un div, je sais pas si c'est la meilleur idée j'ai pas réussi à "fusionner" les 2.

    sinon j'ai converti ta fonction en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return str.replace('\r\n','<br />').replace('\r', '<br />').replace('\n', '<br />');
    vu qu'il ne semblait pas apprécier le array et le problème persiste.

  4. #4
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    EDIT : Voir post suivant

  5. #5
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Probablement qu'il faudra que tu parcoure ta chaîne de caractères au complet puisque replace ne semble pas affecter toutes les occurences de ta chaîne.

    J'ai du code qui devrait se rapprocher de la solution que tu recherches

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    /**
     * Remplace la caractère c1 par le caractère c2 dans la chaîne s
     *
     * Paramètres : char c1 (Caractère à remplacer)
     *              char c2 (Caractère de remplacement)
     *              str  s  (Chaîne à modifier)
     * Retourne   : str  s
     **/
    function remplacer(c1, c2, s) {
     for(var j = 0;j < s.length;j++) {
       if (c1.indexOf(s.charAt(j),0) != -1) s = addCar(c2, delCar(s, j), j--);
     }
     return s;
    }
     
    /**
     * Ajoute un caractere a un endroit precis dans une chaine
     * Paramètres : char c     (Caractère à ajouter)
     *              str  s     (Chaine à modifier)
     *              int  i     (Indice d'emplacement du caractere)
     * Retourne   : str chaine 
     **/
    function addCar(c, s, i) {
      var chaine = "";
      if(i>0) {
        for(var j=0;j<i;j++) {
          chaine += s.charAt(j);
        }
      }
      chaine += c;
      for(var j=i;j<s.length;j++) {
        chaine += s.charAt(j);
      }
      return chaine;
    }
     
    /**
     * Supprime un caractère à un endroit précis dans une chaîne
     * Paramètres : str  s     (Chaîne à modifier)
     *              int  i     (Indice d'emplacement du caractère)
     * Retourne   : str chaine
     **/
    function delCar(s, i) {
      var chaine = "";
      if(i>0) {
        for(var j=0;j<i;j++) {
          chaine += s.charAt(j);
        }
      }
      for(var j=(i+1);j<s.length;j++) {
        chaine += s.charAt(j);
      }
      return chaine;
    }
    Il suffirait de vérifier si ça fonctionne avec "<br>" comme catactère de remplacement. Probablement que certaines adaptations seraient nécessaires pour gérer des chaînes plutot que des caractères néanmoins ce serait un bon début.

  6. #6
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    ok merci je voulais éviter de parcourrir toute la chaine, mais bon je vais essayer comme ça vu que c'est ce que tu propose :d


    merci pour ton aide en tout cas

  7. #7
    Membre très actif Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Par défaut
    Je pense que ca sera plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return str.replace(/\n/g,'<br />\n');

  8. #8
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    Citation Envoyé par Sacha999 Voir le message
    Je pense que ca sera plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return str.replace(/\n/g,'<br />\n');
    ah oui merci ça marche à merveille !!!

    mais quelle est la différence entre /\n/g et '\n' ???

  9. #9
    Membre très actif Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Par défaut
    "/\n/g" c'est du peudo-regex, le "/g" signifie global, donc le remplacement sur tout le texte et pas que la 1er occurence (comportement par défaut de JS)

  10. #10
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    Citation Envoyé par Sacha999 Voir le message
    "/\n/g" c'est du peudo-regex, le "/g" signifie global, donc le remplacement sur tout le texte et pas que la 1er occurence (comportement par défaut de JS)
    ah bah merci ça explique tout

  11. #11
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Je me demande souvent il faut parfois utiliser des techniques de la sorte pour obtenir le comportement désiré avec Javascript, pourquoi ne pas fonctionner avec la même logique que les autres langages.

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

Discussions similaires

  1. [Eclipse 3.0.1] Convertir des sources Dos en Unix
    Par Bicnic dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 22/09/2009, 16h38
  2. [Fonction Oracle] Convertir des secondes en heure
    Par falcon dans le forum Oracle
    Réponses: 12
    Dernier message: 18/11/2004, 11h56
  3. [Fonction SQL Server] Convertir des secondes en heure
    Par falcon dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/11/2004, 17h22
  4. Réponses: 2
    Dernier message: 17/08/2004, 14h27
  5. Convertir des bmp en jpeg
    Par chris56 dans le forum Linux
    Réponses: 8
    Dernier message: 10/10/2003, 21h23

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