Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenia reguarne wybranie pól z tabeli
Forum PHP.pl > Forum > PHP
twardes
Witam,

Mam ja źródło o następującej formie
Kod
    <table>
           <tr>
               <td>bleble
               </td>
           </tr>
       </table>
      
       <table>
           <tr>
               <td>blebluoe
               </td>
           </tr>
           <tr>
               <td>
                   <table>
                       <tr>
                           <td>nazwa pola1
                           </td>
                           <td>tresc pola1
                           </td>
                       </tr>
                       <tr>
                           <td>nazwa pola2
                           </td>
                           <td>tresc pola2
                           </td>
                       </tr>
                       <tr>
                           <td>nazwa pola3
                           </td>
                           <td>tresc pola3
                           </td>
                       </tr>
                   </table>
               </td>
           </tr>
           <tr>
               <td>
                   <table>
                       <tr>
                           <td>bleble
                           </td>
                       </tr>
                   </table>
               </td>
           </tr>
       </table>

zawiera ono jedynie 3 tgi (table, tr i td) bez atrybutów oraz treść w komórkach (wieloznakową, nie tyko alfanumeryczną).

próbowałem "rozebrać" źródło przy pomocy funkcji preg_match_all najpierw na 4 tabele, potem w 3 tabeli rozebrać na wiersze a ostatecznie wyłuskać zawartość <td>. Taki sposób najbardziej by mi osdpowiadał przy wpisywaniu do bazy według nazwy pola a nastepnie jego tresci.

Niestety albo moja niemal nikła znajomość wyrażeń regularnych albo w/w funkcji powoduje że nic mi z tego sensownego nie wychodzi.

próbowałem
  1. <?php
  2. preg_match_all("/(<td>)([^<]*)(</td>)/", $zrodlo, $matches, PREG_SET_ORDER);
  3.  
  4. foreach ($matches as $val)
  5.  
  6. {echo $val[2];}
  7. ?>
i mi ów sposób wyciąga tekst z całości źródła, natomiast to samo z <table> mi sie nie udaje.

Prosze urzejmie o pomoc i wskazówki
ddiceman
Spróbuj
  1. <?php
  2. preg_match_all("/(<td>)([^<]*)(</td>)/U", $zrodlo, $matches, PREG_SET_ORDER);
  3.  
  4. foreach ($matches as $val)
  5.  
  6. {echo $val[2];}
  7. ?>

Flaga U na koncu powoduje, ze wzorzec jest niezachlanny - pochlania jak najmniej z ciągu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.