Avatar billede moddi100 Seniormester
12. april 2009 - 14:19 Der er 1 kommentar og
1 løsning

Avanceret regex

Hej,

Jeg har en kode med et vilkårligt antal tabeller, der yderligere kan indeholde tabeller. Jeg ønsker så at sætte den yderste tabel ind i en div:

$str = "
<html>
<div>Noget HTML</div>
<table>
  <tr>
    <td>a</td>
    <td>b</td>
  </tr>
  <tr>
    <td>
      <table>
        <tr>
          <td>Tabel 1</td>
        </tr>
      </table>
    </td>
    <td>2</td>
  </tr>
</table>
<b>Dette er en overskrift</b>
<table>
  <tr>
    <td>a</td>
    <td>b</td>
  </tr>
  <tr>
    <td>1</td>
    <td>2</td>
  </tr>
</table>
<div><i>Kursiv!</i></div>
</html>";

// Output skulle så gerne være følgende

<html>
<div>Noget HTML</div>
<div>
  <table>
    <tr>
      <td>a</td>
      <td>b</td>
    </tr>
    <tr>
      <td>
        <table>
          <tr>
            <td>Tabel 1</td>
          </tr>
        </table>
      </td>
      <td>2</td>
    </tr>
  </table>
</div>
<b>Dette er en overskrift</b>
<div>
  <table>
    <tr>
      <td>a</td>
      <td>b</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
    </tr>
  </table>
</div>
<div><i>Kursiv!</i></div>
</html>

Jeg vil mene at et regex er løsningen, jeg ved dog ikke helt hvordan den skal udformes, da der jo kan være tabeller inde i den yderste tabel. Så det blev noget alá dette (hvilket IKKE tager højde for eventuelle tabeller):

preg_replace("{<table[^>]*>(.*?)</table>}i", "$1", $str);
Avatar billede moddi100 Seniormester
12. april 2009 - 14:21 #1
Hov min fejl, det skulle have været sådan:
preg_replace("{(<table[^>]*>.*?</table>)}i", "<div>$1</div>", $str);
Avatar billede moddi100 Seniormester
13. april 2011 - 21:34 #2
Lukker her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester