[PHP] Regex om tabel opmaak te wijzigen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op dit moment bezig met een eigen CMS en hierin wil ik een mooi PHPinfo overzichtje verwerken.

Ik heb vooralsnog het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
ob_start();
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES);
$phpinfo = ob_get_contents();
ob_end_clean();
preg_match_all('#<body[^>]*>(.*)</body>#siU', $phpinfo, $output);
$output = preg_replace('#<table#', '<table class="adminlist"', $output[1][0]);
$output = preg_replace('#(\w),(\w)#', '\1, \2', $output);
$output = preg_replace('#border="0" cellpadding="3" width="600"#', 'border="0" cellspacing="0" cellpadding="0" width="100%" class="rows"', $output);
$output = preg_replace('#<hr />#', '', $output);
$output = preg_replace('# class="e"#', '', $output);
$output = preg_replace('# class="v"#', '', $output);
$output = preg_replace('/((<tr>.*?<\\/tr>[^<]*<tr)(>.*?<\\/tr>))/s', '$2 class="darkrow"$3', $output);
$output = preg_replace('/((<tr)(>.*?<\\/tr>[^<]*<tr class="darkrow">.*?<\\/tr>))/s', '$2 class="lightrow"$3', $output);

Nu werkt dit perfect ( tips zijn altijd welkom ).

Maar nu ben ik opzoek naar een reguliere expressie die op elke tabelrij achter elke tabelcel, behalve de laatste, nog een tabelcel voegt ( voor opmaaktechnische redenen ).

Tot nu toe ben ik tot het volgende gekomen:
code:
1
$output = preg_replace('/(<td>.*?<\\/td>)((?!^<\\/tr>))/s', '$1<td class="s"></td>$2', $output);


Toch plaatst deze ook achter de laatste tabelcel, dus voor het einde van een tabelrij de extra tabelcel. Kan iemand mij hiermee helpen? Ik heb met rot gezocht maar ik kan niks vinden. Zelfs mijn trouwe RegexBuddy kan me er niet mee helpen.

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Eerst een preg_match_all, en dan daar een for loopje overheen tot sizeof($output[1][1]) en preg_replace ?

Iets minder snel ,maar verwaarloosbaar voor waar jij het wil gebruikenw aarschijnlijk :)

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
als je ergens voor opmaaktechnische redenen een lege kolom tussen wilt zetten, kun je beter met styles gaan werken lijkt me...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Edwardvb schreef op maandag 14 mei 2007 @ 23:51:
als je ergens voor opmaaktechnische redenen een lege kolom tussen wilt zetten, kun je beter met styles gaan werken lijkt me...
Ansich vind ik dat ook een oplossing ware het niet dat ik dan nog altijd hetzelfde probleem heb. De opmaak van die ene kolom wordt al in css aangeroepen. Maar als ik die op de bestaande tabellen wil loslaten wil ik nog steeds alles behalve de laatste tabelcel ( of alles behalve de eerste tabelcel, aangezien ik de css-style kan uitlijnen ) selecteren. En daar heb ik toch echt een regex voor nodig.

Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ik bedoel ook eigenlijk dat je dan met een regex een style toevoegd...
heb je natuurlijk nog steeds de regex nodig, maar ok ;)

je zou er eventueel 2 regexen aan kunnen spenderen als je het overzichtelijk wil houden...
eerst een die aan alle TD's iets toevoegt.... daarna een die van de laatste TD het er weer afhaalt...

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

PHP:
1
2
$output = str_replace('</td>', '</td><td>&nbsp;</td>', $output);
$output = str_replace("</td><td>&nbsp;</td></tr>", "</td></tr>", $output)
:?

Stop uploading passwords to Github!

Pagina: 1