分析HTML代码
html一般包括以下的部分:
标签,以包裹
文档声明、注释等格式
半开标签<....>
闭合标签
立即学习“PHP免费学习笔记(深入)”;
内容,非以包裹,这一部分内容中多空格是无效果的
PHP正则分解html代码
html代码是以标签为界限的,所以,只要按标签分解就可以了。在PHP中使用preg_split:
$segments = preg_split("/(<[^>]+?>)/si",$html, null,PREG_SPLIT_NO_EMPTY| PREG_SPLIT_DELIM_CAPTURE);例如,以下的代码
Orz企业网站管理系统整合了企业网站所需要的大部分功能,并在其基础上做了双语美化。压缩包内有必须的图片psd源文件,方便大家修改。 Orz企业网站管理系统功能: 1.动态首页 2.中英文双语同后台管理 3.产品具有询价功能 4.留言板功能 5.动态营销网络 6.打印功能 7.双击自动滚动 Orz企业网站管理系统安装 1、请将官方程序包解压后上传至您的虚拟主机即可正常使用; 2、后台管理面板登录:
$html = <<
狼魂博客
HTML;
print_r(preg_split("/(<[^>]+?>)/si",$html, -1,PREG_SPLIT_NO_EMPTY| PREG_SPLIT_DELIM_CAPTURE));会产生如下的输出:
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] => 狼魂博客
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
[15] =>
[16] =>
[17] =>
[18] =>
[19] =>
[20] =>
[21] => 文章RSS
[22] =>
[23] =>
[24] =>
[25] => 网站地图
[26] =>
[27] =>
[28] =>
[29] => 日期归档
[30] =>
[31] =>
[32] =>
[33] => 标签归档
[34] =>
[35] =>
[36] =>
[37] =>
[38] => 狼魂博客
[39] =>
[40] =>
[41] =>
[42] =>
[43] => 关注WEB,体悟生活;珍惜生命,远离代码。
[44] =>
[45] =>
[46] =>
[47] =>
[48] =>
[49] =>
[50] =>
[51] =>
[52] =>
[53] =>
)最简单但有损的PHP压缩
最简单的压缩就是直接连接所有的非空项,同时非标签去掉所有的空白:
$compressed = array();
foreach($segments as $seg)
{
$seg = trim($seg);
if($seg)
{
//非标签中的空白是无效的字符
$compressed[] = $seg[0] === '<' ? $seg : preg_replace('!\s!','',$seg);
}
}
return join('',$compress);如以上的HTML通过这样的压缩生成的代码是(为了方便显示,我手动将它们断行了):
狼魂博客
正常情况下这没错,但是也有“不正常”的情况:遇到不能去掉空白的内容时。比如script、code、pre、style是不可以去掉空白的,这时,就要使用栈进行压缩了:
使用栈进行安全压缩html
使用栈的规则是:<..>标签入栈,标签出栈,和<..>不理,但有一种可能的情况是,<..>不一定有结尾的反斜杠如:
都是可以的,这时就要特殊的处理这种情况:
var say = "Hello world!";
print say;










