Autor Zpráva
Michal666
Profil
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 *
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
DoubleThink
Dobry napad, zkusim napsat nejaky regular.
DoubleThink
Profil *
Dobry napad, zkusim napsat nejaky regular.
Nebude jednodušší regulár, který by doplnil CDATA?
Michal666
Profil
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 *
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.' )([^>]+)(>)', '&lt;'.$tag.' \\2&gt;', $tmp);
	$tmp = str_replace('<'.$tag.'>', '&lt;'.$tag.'&gt;', $tmp);
	$tmp = str_replace('</'.$tag.'>', '&lt;/'.$tag.'&gt;', $tmp);
	$tmp = str_replace('<'.$tag.'/>', '&lt;'.$tag.' /&gt;', $tmp);
	$tmp = str_replace('<'.$tag.' />', '&lt;'.$tag.' /&gt;', $tmp);
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: