PHP stristr false positive for CDATA -
the following html/css html email sent hotmail...
<style><!-- .hmmessage p { margin:0px; padding:0px } body.hmmessage { font-size: 12pt; font-family:calibri } --></style>
i'm merely trying css inside style elements. may contain html comments such 1 above or cdata. strange reason php returning false-positive cdata below string above...
if (stristr($b,'<style')) { $s = explode('<style',$b,2)[1]; $s = explode('>',$s,2)[1]; if (stristr($s,'<![cdata[')) { $s = explode('<![cdata[',$s,2)[1]; $s = explode(']]',$s,2)[0]; } else if (stristr($s,'<!--')) { $s = explode('<!--',$s,2)[1]; $s = explode('-->',$s,2)[0]; } else { $s = explode('</style>',$s,2)[0]; }
why not take domdocument?
$html = " <style><!-- .hmmessage p { margin:0px; padding:0px } body.hmmessage { font-size: 12pt; font-family:calibri } --></style>"; $dom = new domdocument(); $dom->loadhtml($html); $style = $dom->getelementsbytagname('style'); // content first style tag $css = $style->item(0)->nodevalue; // clear comments , cdata tags $css = str_replace(array('<!--', '-->', '<![cdata[', ']]>', '//<![cdata[', '//]]>'), '', $css); echo $css;
Comments
Post a Comment