php删除html5废弃的标签属性

作者:enenba | 发表于:2012-06-01 15:04 | 分类:php源码

html5已经废弃了一些标签属性,在一些编辑器中有可能不能直接删除,我写了一个尽量去掉非html5属性标签php函数。代码附上:

<?php
/**
 * php删除html5废弃的标签属性 by enenba
 * 2012-6-1
 * 如:align valign bgcolor height width hspace vspace
 * body中link、vlink、alink、text属性 header中profile、 a中target、 img和iframe元素的longdesc
 *
 * @param str $html html源码
 * @return str 删除后代码
 */
function del_no_html5_attribute($html) {
	$search = array (
		'/(<[^<>]+?)\s?align="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<[^<>]+?)\s?valign="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<[^<>]+?)\s?bgcolor="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<[^<>]+?)\s?height="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<[^<>]+?)\s?width="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<[^<>]+?)\s?hspace="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<[^<>]+?)\s?vspace="[^<>]*?"\s?([^<>]*?>)/is',

		'/(<body[^<>]*?)\s?link="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<body[^<>]*?)\s?vlink="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<body[^<>]*?)\s?alink="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<body[^<>]*?)\s?text="[^<>]*?"\s?([^<>]*?>)/is',

		'/(<header[^<>]*?)\s?profile="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<a[^<>]*?)\s?target="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<img[^<>]*?)\s?longdesc="[^<>]*?"\s?([^<>]*?>)/is',
		'/(<iframe[^<>]*?)\s?longdesc="[^<>]*?"\s?([^<>]*?>)/is',
		);
	return preg_replace($search, '$1$2', $html);
}

$html = '
<body link="123">
<div hspace="2" vspace="1">内容1</div><table bgcolor="#1231231" height="10" width="134"></table>
<a href="test.php" target="_blank"></a>
</body>
<div style="width:15px;" align="left"></div>
';

highlight_string(del_no_html5_attribute($html));
/*
<body> 
<div>内容1</div><table></table> 
<a href="test.php"></a> 
</body> 
<div style="width:15px;"></div> 
*/
?>

 

end...

上一篇: php匹配字符串中符合的时间格式的内容   |   下一篇:【转】如何写出高效率的正则表达式» 标签: php函数 删除属性 html5

评论: