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

jQuery Discussion :

Séparer une chaîne de caractère avec un délimiteur


Sujet :

jQuery

  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut Séparer une chaîne de caractère avec un délimiteur
    J'utilise l'éditeur CKEditor et j'entre plusieurs pages avec le saut de page de CKEditor comme délimiteur entre les pages. Si donc j'entre par exemple 10 pages, j'aimerai récupérer toutes ces pages dans un tableau, mais je n'arrive pas. Je suis tombé sur le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var chaine="Jean-Paul, Arthur ; Léon, Marcel ; Paul";
    var reg=new RegExp("[;]+", "g");
    document.write("Chaîne d'origine : " + chaine + "<BR>");
    var tableau=chaine.split(reg);
    for (var i=0; i<tableau.length; i++) {
    	document.write("tableau[" + i + "] = " + tableau[i] + "<BR>");
    }
    Ce code utilise le point virgule ; comme délimiteur, mais dans mon cas, lorsque je vais dans le code source du navigateur, je me rend compte que le délimiteur c'est <div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>
    ce qui ne s'adapte pas à mon script ci dessus puisque quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reg=new RegExp('[style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>]+', 'g');
    ça ne marche pas

    Quelqu'un a-t-il une idée ?

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    si tu utilises les crochets [] , ce qui est entre le crochet est l'ensemble des caractères autorisés peu importe l'ordre la reg matche un de caractères.
    Tu cherches à matcher une chaine complète, une suite ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reg=new RegExp('<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>', 'g');
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    OK, mais là il n'effectue pas l'opération voulu, lorsque je sais dans l'editeur

    Pierre

    Jean

    Paul

    séparés par un saut de page, je fais un alert(maVariable), j'obtient ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <p>
    	&nbsp;</p>
    <p>
    	Pierre&nbsp;</p>
    <div style="width: 1566px; page-break-after: always; ">
    	<span style="display: none;">&nbsp;</span></div>
    <p>
    	Jean&nbsp;</p>
    <div style="width: 1566px; page-break-after: always; ">
    	<span style="display: none;">&nbsp;</span></div>
    <p>
    	Paul</p>
    Ce qui fait que selon mon code, il devrait m'afficher ceci
    tableau[0]=Pierre
    tableau[1]=Jean
    tableau[2]=Paul
    mais il affiche plutôt ceci :

    tableau[0] =
    Pierre

    Jean

    Paul

    montrant que la séparation n'a pas marché

  4. #4
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Par rapport a l'objet regexp, j'ai vu que \f correspond à un saut de page mais je ne sais comment l'utiliser

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Une solution:
    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
    <div id="foo">
    <p>
    	&nbsp;</p>
    <p>
    	Pierre&nbsp;</p>
    <div style="width: 1566px; page-break-after: always; ">
    	<span style="display: none;">&nbsp;</span></div>
    <p>
    	Jean&nbsp;</p>
    <div style="width: 1566px; page-break-after: always; ">
    	<span style="display: none;">&nbsp;</span></div>
    <p>
    	Paul</p>
    </div>
    <script type="text/javascript">
    reg=new RegExp("([^>]+)(&nbsp;)?</p>","gi")
    chaine=document.getElementById('foo').innerHTML
    tabnom=new Array()
    while(reg.exec(chaine)){
    tabnom.push((RegExp.$1.match(/^([^&]+)(&nbsp;)?/)[1]))
    }
    alert(tabnom)
    </script>
    Ou vu que nous sommes dans le forum jquery
    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
    <div id="foo">
    <p>
    	&nbsp;</p>
    <p>
    	Pierre&nbsp;</p>
    <div style="width: 1566px; page-break-after: always; ">
    	<span style="display: none;">&nbsp;</span></div>
    <p>
    	Jean&nbsp;</p>
    <div style="width: 1566px; page-break-after: always; ">
    	<span style="display: none;">&nbsp;</span></div>
    <p>
    	Paul</p>
    </div>
    <script type="text/javascript">
    $(function(){
    tabnom1=new Array()
    $.each( $('p').not(':empty'),function(){
    					tabnom1.push($(this).html().match(/^([^&]+)(&nbsp;)?/)[1])
    		})
     
    		alert(tabnom1)
    })
     
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Merci beaucoup SpaceFrog, je commence à comprendre un peu comment ça marche, mais il y a un petit problème, c'est que ton script ci-dessous, exclu mes balises html puisque tu t'es basé uniquement sur l'example que j'ai pris. En fait ce que je veux c'est ceci :

    J'utilise un éditeur et ce qu'il me renvoi c'est du pur hmtl que je mets dans la bd, jusque là, je n'ai pas de problème, mais le pb c'est que un utilisateur peut enregistrer un long document de 20 pages par exemple et ce document ne doit pas être afficher en bloc, c'est pourquoi l'éditeur donne la possibilité d’insérer un saut de page après chaque page, ce qui permet de pouvoir les délimiter.
    Moi donc j'ai besoin de récupérer le document et l'afficher page par page à l'utilisateur avec le bouton Précédent et Suivant. Pour cela je dois mettre ce contenu dans un tableau page par page et je l'affiche avec Précédent et Suivant. Pour faire ça, j'ai besoin de connaitre le délimiteur qui me permettra de savoir où une page commence et où elle s'arrête.
    Je me suis donc rendu compte que le délimiteur de l'éditeur c'était ceci <div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>

    Donc j'ai besoin d'un script qui, quelque soit le contenu de ma chaîne de caractère, me met chaque partie ou page dans un tableau en ayant pour délimiteur ceci, ou alors avant d'enregistrer dans la bd, je remplace leur délimiteur par un chaîne personnalisée de la sorte monDelimiteurDePage et je préfère même cette option, là ce sera facile pour moi à récupérer et afficher dans le tableau page par page avec mon premier script ci-dessus.

    Donc un script qui remplace uniquement toutes les occurrences de <div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div> par monDelimiteurDePage me suffirait largement et moi je ferai la suite.

    Merci

  7. #7
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Même quand j'utilise php pour faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $maChaine=str_replace('<div style="page-break-after: always;"><span style="display: none;">&nbsp;</span></div>','monDelimiteurDePage',$maChaine);
    ça ne marche pas.

    Pourquoi les fonctions de chaines ne marche pas avec du html pur ? Comment spécifier que le html soit considérer comme une simple chaîne

  8. #8
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    J'y arrive toujours pas

  9. #9
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je ne suis pas sur d'avoir bien compris la demande mais pourquoi ne pas utiliser du php la fonction implode peu peut être t'aider non? http://php.net/manual/fr/function.implode.php

    D'accord excusez moi donc d'avoir mal compris le problème

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    Peut être simplement parce que php ne peut rien faire coté client
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Points : 161
    Points
    161
    Par défaut
    Effectivement, mais comme je communique avec php par JSON et j'utilise php pour enregistrer dans la BD, j'ai abandonné le projet de le faire dans jQuery, je le fais plutôt dans php avant d'enregistrer dans la BD et la fonction explode marche

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

Discussions similaires

  1. Comment hacher une chaîne de caractères avec MD5
    Par dalilnet dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 20/08/2008, 14h44
  2. [FAQ] Comment tester une chaîne de caractères avec une expression régulière ?
    Par Baptiste Wicht dans le forum Vos Contributions VBScript
    Réponses: 1
    Dernier message: 20/11/2007, 19h43
  3. Séparer une chaîne de caractère
    Par Ykaar dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/05/2007, 08h16
  4. Extraction d'une chaîne de caractère avec SQL
    Par opeo dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 28/07/2006, 15h36
  5. Séparer une chaîne de caractères en js
    Par PedroBD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/07/2006, 13h15

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