以下HTML / CSS来自Hotmail发送的HTML电子邮件......
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style>
我只是想从样式元素中获取CSS。有些可能包含HTML注释,例如上面的注释或CDATA。由于一些奇怪的原因,PHP为下面的字符串返回CDATA的误报...
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];
}
答案 0 :(得分:2)
为什么不采取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');
// get the content from first style tag
$css = $style->item(0)->nodeValue;
// clear the comments and cdata tags
$css = str_replace(array('<!--', '-->', '<![CDATA[', ']]>', '//<![CDATA[', '//]]>'), '', $css);
echo $css;