Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PHP/regexp] Récupérer contenu tableau

    15 octobre 2018 à 14:48:32

    Bonjour à tous, 

    Je suis en train de regarder pour récupérer du contenu dans une source HTML.

    Aucun problème pour récupérer la source en elle même, je bloque sur la REGEXP à écrire pour parvenir à cibler mes éléments.

    Ma source contient 3 tableaux, de cette structure :

    <h3>Section_1</h3>
    <table>
        <tr>
            <td>label_1</td>
            <td>value_1</td>
        </tr>
        <tr>
            <td>label_2</td>
            <td>value_2</td>
        </tr>
    <tr>
            <td>label_3</td>
            <td>value_3</td>
        </tr>
    <tr>
            <td>label_4</td>
            <td>value_4</td>
        </tr>
    </table>
    <h3>Section_2</h3>
    <table>
        <tr>
            <td>label_1</td>
            <td>value_1</td>
        </tr>
        <tr>
            <td>label_2</td>
            <td>value_2</td>
        </tr>
    <tr>
            <td>label_3</td>
            <td>value_3</td>
        </tr>
    <tr>
            <td>label_4</td>
            <td>value_4</td>
        </tr>
    </table>
    <h3>Section_3</h3>
    <table>
        <tr>
            <td>label_1</td>
            <td>value_1</td>
        </tr>
        <tr>
            <td>label_2</td>
            <td>value_2</td>
        </tr>
    <tr>
            <td>label_3</td>
            <td>value_3</td>
        </tr>
    <tr>
            <td>label_4</td>
            <td>value_4</td>
        </tr>
    </table>

    Les tableaux contiennes un nombre de lignes variable.

    J'aimerais ressortir l'ensemble des ses lignes contenues dans ces trois tableaux pour en extraire 3 arrays : $array[label][value]

    Je n''ai jamais réussi à travailler avec les regexp, pour le moment je sors les cellules unes à une et fais des traitements dessus pour en obtenir un tableaux.

    Le soucis se trouve dans les labels, certains peuvent avoir le même nom (dans deux tableaux différents) et ainsi le plus récent écrase les anciens.

    Avez-vous une piste pour m'orienter ?

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
    Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
      15 octobre 2018 à 22:24:41

      Salut,

      Voici un début d'idée :) déjà pas mal avancé !

      $tableHtml = <<<EOT
      <table>
          <tr>
              <td>label_1</td>
              <td>value_1</td>
          </tr>
          <tr>
              <td>label_2</td>
              <td>value_2</td>
          </tr>
      <tr>
              <td>label_3</td>
              <td>value_3</td>
          </tr>
      <tr>
              <td>label_4</td>
              <td>value_4</td>
          </tr>
      </table>
      EOT;
      
      
      $myArray = [];
      $patternTR = '#<tr[^>]*>(.*?)</tr>#is';
      preg_match_all($patternTR, $tableHtml, $lines);
      foreach ($lines[1] as $line) {
      
          preg_match_all( '#<td[^>]*>(.*?)</td>#is', $line, $cells);
          $data = $cells[1];
          if(count($data) >= 2){
              $myArray[$data[0]] = $data[1];
          }
      }
      
      var_dump($myArray);



      • Partager sur Facebook
      • Partager sur Twitter
        16 octobre 2018 à 8:05:13

        Hello,

        Les regex sont gourmandes en ressource, pourquoi ne pas utiliser un parser xml si c'est pour analyser du html ?

        • Partager sur Facebook
        • Partager sur Twitter

        [PHP/regexp] Récupérer contenu tableau

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown