用正则使html合法闭合标签

作者:enenba | 发表于:2012-05-15 23:31 | 分类:php源码

在html代码中,大部分标签是有开始和结束的,但是有一些标签是没有结束标签的空元素比如<input /> <br />,他有两种写法,第一种:<input>,第二种:<input/>,现在html5中,做了统一规范,要求所有的标签必须闭合。

当然自己写了很多html没注意闭合,都要一一修改岂不麻烦死,于是写了一个PHP正则用于闭合标签函数。代码如下:

<?php
/**
 * 自动闭合HTML空元素标签 by enenba
 * 如:<br> <input> <img> <link> <meta> <hr> <col> <frame> <isindex> <param>
 * 转换成闭合的 <... />形式
 * 
 * @param string $str    html代码
 * @return string $str   处理后闭合的html代码
 */
function bihehtml($str) {
	$search = '/<(img|hr|br|input|link|meta|col|frame|isindex|param)([^\/]*?)(?<!\/)>/i';
	return preg_replace($search, '<$1$2 />', $str);
} 


$str = '<img src="123123.jpg" />457<img src="abv.jpg">124<br>124<input type="text" name="ab">';
highlight_string(bihehtml($str));


// output
/*
 <img src="123123.jpg" />457<img src="abv.jpg" />124<br />124<input type="text" name="ab" />
 */
?>

 

用到的正则:

<(img|hr|br|input|meta|link|col|frame|isindex|param)([^\/]*?)(?<!\/)>

 

enenba原创,转载请保留出处:http://enenba.com/?post=167

附件下载/演示源码:
bihehtml.htm11.48KB

上一篇: HTML静态页面参数传递   |   下一篇:如何去掉jiathis分享条中的“这是什么工具 jiathis”» 标签: php函数 php函数库 html

评论: