2 回答
TA贡献1798条经验 获得超7个赞
没有防弹方法可以不匹配负载(style=""
可以出现在任何地方)和不匹配实际 CSS 值(如 中所示content: 'a: b'
)。此外还要考虑
缩短值:
red
短于#f00
,短于#ff0000
删除前导和尾随伪造,如空格和分号
重新设计你的 HTML:即使用
<ins>
和<strong>
可以有效地比使用内联 CSS 更短
一种方法是首先匹配所有内联样式的 HTML 属性,然后仅对它们的内容进行操作,但您必须自己测试它的效果如何:
$out= preg_replace_callback
( '/( style=")([^"]*)("[ >])/' // Find all appropriate HTML attributes
, function( $aMatch ) { // Per match
// Kill any amount of any kind of spaces after colon or semicolon only
$sInner= preg_replace
( '/([;:])\\s*([a-zA-Z0-9#])/' // Escaping backslash in PHP string context
, '$1$2'
, $aMatch[2] // Second sub match
);
// Kill any amount of leading and trailing semicolons and/or spaces
$sInner= preg_replace
( array( '/^\\s*;*\\s*/', '/\\s*;*\\s*$/' )
, ''
, $sInner
);
return $aMatch[1]. $sInner. $aMatch[3]; // New HTML attribute
}
, $newsletter
);
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报