Avatar billede tigertool Nybegynder
14. juni 2008 - 17:47 Der er 7 kommentarer og
1 løsning

Replace i HTML, reg ex?

Hej,

Jeg henter noget HTML fra en database. Jeg har brug for at modificere denne HTML - og jeg kan ikke lige gennemskue hvad den bedste løsning er.

I en mængde HTML skal jeg have byttet om på noget i en <table> - og kun i <table>.

Eksempel før:
<table prevstyle="border: 0px none;" style="border: 1px dashed #AAAAAA;">

Eksempel efter:
<table style="border: 0px none;" prevstyle="border: 1px dashed #AAAAAA;">

Bemærk at prevstyle og style også forefindes andre steder - og kun skal ændres i <table>.

Hvordan klarer jeg dette bedst?
Avatar billede olebole Juniormester
14. juni 2008 - 19:07 #1
<ole>

Hvis du insisterer på at skrive invalid HTML, kan det gøres med:
    $s = preg_replace("/<table(.*?)(prevstyle=\"(?:.*?)\")(.*?)(style=\"(?:.*?)\")(.*?)>/i", "<table$1$4$3$2$5>", $s);

Den bytter om på de to attributter i table-tags, men rører ikke andet i tag'et

/mvh
</bole>
Avatar billede olebole Juniormester
14. juni 2008 - 19:09 #2
- og nu ved du forøvrigt også, hvorfor man aldrig lægger markup kode i databasen  ;o)
Avatar billede masik7 Nybegynder
15. juni 2008 - 12:33 #3
Er der en attribut, der hedder prevstyle? Den har jeg i hvert fald ikke hørt om før
Avatar billede tigertool Nybegynder
15. juni 2008 - 12:35 #4
Ole, din reg ex bytter om på placeringen af prevstyle og style,

altså
Eksempel før:
<table prevstyle="border: 0px none;" style="border: 1px dashed #AAAAAA;">

Eksempel efter:
<table style="border: 1px dashed #AAAAAA;" prevstyle="border: 0px none;">

- dog er det ikke helt det jeg efterspørger. Det er kun attribut-navnet der skal ændres - indholdet skal forblive. Hvis du ser i mit første indlæg vil du se at indholdet af prevstyle og style er byttet om. Det er det ikke i din reg ex.
Avatar billede masik7 Nybegynder
15. juni 2008 - 12:36 #5
Hov nej det er der vel ikke..
Avatar billede tigertool Nybegynder
15. juni 2008 - 12:38 #6
masik7 -> nej, det er et eller andet latterligt CMS der har digtet prevstyle - og jeg har ikke mulighed for at påvirke indholdet der bliver gemt i databasen.. så jeg bliver nød til at forholde mig til det ;)
Avatar billede masik7 Nybegynder
15. juni 2008 - 12:49 #7
Okay :)
Avatar billede tigertool Nybegynder
03. maj 2009 - 18:11 #8
Fandt aldrig en løsning
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

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