Autor | Zpráva | ||
---|---|---|---|
Michal666 Profil |
#1 · Zasláno: 18. 9. 2008, 08:52:04
Zdravim
Mam takovy problem. Dostal na zpracovani XML dokument, ale pakosta programator neobalil HTML text jako CDATA a parser mi to HTML samozrejme rozparsuje. Nevite nekdo jak se vyhnout rozparsovani HTML tagu v XML dokumentu? Dik za odpoved. |
||
DoubleThink Profil * |
#2 · Zasláno: 18. 9. 2008, 10:16:03
„Nevite nekdo jak se vyhnout rozparsovani HTML tagu v XML dokumentu? Dik za odpoved.“
Druhá možnost je změnit řídicí znaky HTML na entity, tím už jsi funkční varianty zřejmě vyčerpal. |
||
Michal666 Profil |
#3 · Zasláno: 18. 9. 2008, 10:18:49
DoubleThink
Dobry napad, zkusim napsat nejaky regular. |
||
DoubleThink Profil * |
#4 · Zasláno: 18. 9. 2008, 10:36:50
„Dobry napad, zkusim napsat nejaky regular.“
Nebude jednodušší regulár, který by doplnil CDATA? |
||
Michal666 Profil |
#5 · Zasláno: 18. 9. 2008, 11:40:05
DoubleThink
No problem je, ze regular na nahradu html tagu je mnohem snazsi nez uzavirat tyto data do CDATA. Navic co jsem tu nezminil, programator byl natolik mazany, ze umistil nektere XML elementy i primo do HTML textu, takze to bude labuz. No co byste chteli po evropske unii :-) |
||
DoubleThink Profil * |
#6 · Zasláno: 18. 9. 2008, 15:16:16
Hmm, tak to je chuť. Takže asi regulárem najít známé tagy a přepsat je na entity.
|
||
Michal666 Profil |
Uz mi to funguje, ale je to husty. Tady kus kodu co to prevede na entity:
// prevedeni HTML tagu na entity $tags = array('a', 'p', 'talbe', 'tr', 'td', 'th', 'ul', 'ol', 'li', 'i', 'strong', 'b', 'br', 'hr'); foreach($tags as $tag) { $tmp = ereg_replace('(<'.$tag.' )([^>]+)(>)', '<'.$tag.' \\2>', $tmp); $tmp = str_replace('<'.$tag.'>', '<'.$tag.'>', $tmp); $tmp = str_replace('</'.$tag.'>', '</'.$tag.'>', $tmp); $tmp = str_replace('<'.$tag.'/>', '<'.$tag.' />', $tmp); $tmp = str_replace('<'.$tag.' />', '<'.$tag.' />', $tmp); } |
||
Časová prodleva: 16 let
|
0