Hoi,
Ik ben de zoveelste HTML-cleaner aan het schrijven, omdat ik nogal specifieke wensen heb volstaan de standaardoplossingen niet. Wel probeer ik waar mogelijk gebruik te maken van standaardoplossingen. Vandaag heb ik voor het eerst Tidy getemd, en ik ben behoorlijk onder de indruk. Ik zit alleen nog met een probleem:
Ik wil alle <b> elementen die direct in de body staan vervangen door h2. Met direct bedoel ik het eerste niveau, dus body->b moet wel worden vervangen, maar body->p->b moet gewoon blijven staan. Nou doe ik dat normaal met SimpleXML (alle docs zijn XHTML), maar omdat ik nu toch met Tidy werk wil ik het proberen daarmee te rooien.
Tot nu toe heb ik (voor de tidy_get_output) de volgende knuppelige code:
Hoewel een simpele echo leert dat de name inderdaad wordt aangepast heeft dit geen effect op het uiteindelijke resultaat. Das logisch, want ik pas alleen de naam van $first aan, niet van het element zelf. Weet iemand hoe het wel werkt? Ow en: kent iemand een truuk om direct de body te pakken, want dit ziet er niet uit
Alvast bedankt!
Ik ben de zoveelste HTML-cleaner aan het schrijven, omdat ik nogal specifieke wensen heb volstaan de standaardoplossingen niet. Wel probeer ik waar mogelijk gebruik te maken van standaardoplossingen. Vandaag heb ik voor het eerst Tidy getemd, en ik ben behoorlijk onder de indruk. Ik zit alleen nog met een probleem:
Ik wil alle <b> elementen die direct in de body staan vervangen door h2. Met direct bedoel ik het eerste niveau, dus body->b moet wel worden vervangen, maar body->p->b moet gewoon blijven staan. Nou doe ik dat normaal met SimpleXML (alle docs zijn XHTML), maar omdat ik nu toch met Tidy werk wil ik het proberen daarmee te rooien.
Tot nu toe heb ik (voor de tidy_get_output) de volgende knuppelige code:
PHP:
1
2
3
4
| $root = tidy_get_body($tidy); if( $root->hasChildren() ) { foreach ( $root->child as $first ) { if ( $first->name == "b" ) { $first->name = "h2"; } }} |
Hoewel een simpele echo leert dat de name inderdaad wordt aangepast heeft dit geen effect op het uiteindelijke resultaat. Das logisch, want ik pas alleen de naam van $first aan, niet van het element zelf. Weet iemand hoe het wel werkt? Ow en: kent iemand een truuk om direct de body te pakken, want dit ziet er niet uit
Alvast bedankt!
[ Voor 10% gewijzigd door xilent_xage op 10-11-2008 09:22 . Reden: body te pakken! ]