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 :

regex texte entre <td></td>


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Points : 12
    Points
    12
    Par défaut regex texte entre <td></td>
    Saluuut

    je cherche le moyen de parser les données d'un tableau html dans un tableau javascript.

    le tableau html est fait de cette maniere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    <td valign='top' >data1</td>
                    <td valign='top' >Data3</td>
                    <td valign='top' >data 4</td>
                    <td valign='top'  align='right'>25/01/2008 09:24</td>
                    <td valign='top' >data5</td>
                    <td >data6</td>
    les balises <td> peuvent etre vide
    et es parametre peuvent changer genre align='right' align='left' ou autre

    j'ai trouver un poste avec le même probleme http://www.developpez.net/forums/sho...d.php?t=286933
    et une solution qui me convien pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var texte = sous.replace(/\s/gi," "); 
     var exp = /((\<td valign='top' >){1}(\w*|(\w*\s*)*)(\<\/td\>){1})/gi;
     
       var montableau = texte.match(exp);
    le probleme c'est que je dois specifier les parametre du td et que l'expression me donne un resultat avec les balise html

    je souhaite que l'expression soit valable quelque soit les parametre des td et qu'elle me resort juste ce qu il y a entre les balises <td>

    help me please

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Salut

    Tu cherches donc a parser uniquement le texte compris entre les balises td ?
    pourquoi ne pas toutes les récupèrer via un getElementsByTagName("td") puis sur chacune d'entre elle , effectuer ton traitement ?

    Bon courage

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    Salut

    Tu cherches donc a parser uniquement le texte compris entre les balises td ?
    pourquoi ne pas toutes les récupèrer via un getElementsByTagName("td") puis sur chacune d'entre elle , effectuer ton traitement ?

    Bon courage
    Merci pour ta reponse mais le fichier est situer sur un server distant (dans mon travail)
    Et que je prend le fichier avec XMLHTTP.
    Donc ca marche pas dans mon cas

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    bonjour,

    donne un id à ton tableau puis utilise les propriétés rows et cells :
    Code javascript : 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
     
    function lectureLignesTab()
    {
      var tableau = document.getElementById('tableau');  // on cible tout le tableau
      var trs = tableau.rows;   // liste des tr dans le tableau
      var n = trs.length;
      var i, j, m;
     
      for (i=0; i<n; i++)
      {
        m = trs[i].cells.length;     // nombre de cellules (td) dans une ligne (tr)
        for (j=0; j<m; j++)
        {
            alert(trs[i].cells[j].innerHTML);  // affichage du contenu de la cellule i,j
        }
      }
     
    }

    je n'ai pas testé ce code dans le cas où les attributs colspan ou rowspan sont ajoutés dans le tableau.

  5. #5
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Merci pour ta reponse mais le fichier est situer sur un server distant (dans mon travail)
    Et que je prend le fichier avec XMLHTTP.
    Donc ca marche pas dans mon cas
    Tu fais bien le load de ton fichier xml ?

    par exemple ( je passe les méthode ajax ... ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    xmlDoc = document.implementation.createDocument("", "", null);
                    xmlDoc.async=false;
                    xmlDoc.load("fichier.xml");
    si oui , la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.getElementsByTagName('td')
    Marche parfaitement

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    merci je vais tester
    et je vous dis quoi

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Auteur Voir le message
    bonjour,
    donne un id à ton tableau puis utilise les propriétés rows et cells :
    j'ai pas acces à la source page c est sur un serveur sur l'intranet du travail.
    Je veux faire des script qui font le boulot à ma place comme ça j'ai plus de temps pour des pauses clope et café et comme j'ai pas d'acces à la db
    je souhaite prendre les donner d'un application web de reporting.

    donc je peut pas changer la source de la page

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    Tu fais bien le load de ton fichier xml ?

    par exemple ( je passe les méthode ajax ... ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    xmlDoc = document.implementation.createDocument("", "", null);
                    xmlDoc.async=false;
                    xmlDoc.load("fichier.xml");
    si oui , la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlDoc.getElementsByTagName('td')
    Marche parfaitement
    c'est pas un fihcier xml lorsque j'ai addapter m'a fonction avec ce code j'ai une erreur.
    voici mon code d'origine
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <html>
    <head>
    <script type="text/javascript">
    var xmlhttp;
     
    function loadXMLDoc(url)
    {
    xmlhttp=null;
    if (window.XMLHttpRequest)
      {// code for Firefox, Opera, IE7, etc.
      xmlhttp=new XMLHttpRequest();
      }
    else if (window.ActiveXObject)
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    if (xmlhttp!=null)
      {
      xmlhttp.onreadystatechange=state_Change;
      xmlhttp.open("GET",url,true);
      xmlhttp.send(null);
      }
    else
      {
      alert("Your browser does not support XMLHTTP.");
      }
    }
     
    function state_Change()
    {
    var Chaine;
    var debut;
    var fin;
    var sous;
    var O_Dest = document.getElementById( 'T_TXT');
    if (xmlhttp.readyState==4)
      {// 4 = "loaded"
      if (xmlhttp.status==200)
     
        {// 200 = "OK"
        Chaine=xmlhttp.responseText;
        debut = Chaine.indexOf("<tbody>", 0);
        fin = Chaine.indexOf("</tbody>", 0);
        sous = Chaine.substring(debut+7,fin+8);
        var test = sous.replace(/\s/gi," "); 
        var exp = /((\<td valign='top' >){1}(\w*|(\w*\s*)*)(\<\/td\>){1})/gi;
    O_Dest.value = test.match(exp);
        }
      else
        {
        alert("Problem retrieving data:" + xmlhttp.statusText);
        }
      }
    }
    </script>
    </head>
     
    <body>
    <textarea id="T_TXT" cols="80" rows="40"></textarea>
    <button onclick="loadXMLDoc('http://portail/test.html')">Click</button>
    </body>
     
    </html>

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    un petit up

    pour un


    j'ai chercher dans tout les sens je trouve pas la regex pour me sortir un tableau contenant les données entre tag html

    j'arrive à faire un tableau avec les donné + les tag avec cet regex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var exp7 = /(\<td.*>)(.*)(<\/td\>)/gi;
    en pricipe si je fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var exp7 = /(?:\<td.*>)(.*)(?:<\/td\>)/gi;
    il devrais matcher les tag mais pas les prendre en compte dans mon tableau

    j'ai trouvé ceci sur la reference javascript link

    mais ça marche pas

    pour un

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    bonjour,

    une solution qui ce fait en 2 temps. J'utilise 2 expressions régulières : la première pour supprimer la balise ouvrante <td.....> et la seconde pour supprimer la balise fermante </td>.

    J'ai fait le test avec les 6 lignes de ton tableau et ça passe.
    Code x : 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
    var ligne_1 = "<td valign='top'>data1</td>";
    var ligne_2 = "<td valign='top'>Data3</td>";
    var ligne_3 = "<td valign='top'>data 4</td>";
    var ligne_4 = "<td valign='top' align='right'>25/01/2008 09:24</td>";
    var ligne_5 = "<td valign='top'>data5</td>";
    var ligne_6 = "<td>data6</td>";
    
    var texte = ligne_1; // ligne à tester
    
    
    //-----------------------
    
    // suppression du <td......> de la ligne choisie
    var texte = texte.replace(/(\<td(\s[a-z]+='[a-z]+\')*>)/gi,"");
    
    //suppression du </td>
    var texte = texte.replace(/(\<\/td\>)/gi,"");
    
    // affichage du contenu sans les balises
    alert(texte);

Discussions similaires

  1. [REGEX] Texte entre parenthèse
    Par Amuny dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/04/2011, 14h45
  2. supprimer texte entre deux balises specifiques
    Par HurtMarley dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 18h30
  3. récupération texte entre <option> et </option>
    Par Trunks dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/09/2005, 14h19
  4. [SAX] Problème SAX lecture du texte entre les balises
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/07/2005, 17h24
  5. Agir sur le texte entré dans un éditeur
    Par FatalError dans le forum C++
    Réponses: 1
    Dernier message: 24/10/2004, 14h54

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