基于PHP的格式化HTML代码功能的设计与实现
2017-11-17罗良夫张丽
罗良夫++张丽
摘要:随着互联网技术的发展,大量的信息系统采用了B/S架构,从而产生了大量的HMTL页面文件,为了解决大量HTML代码不易维护与管理的问题,采用了PHP作为主要技术开发了格式化HTML代码的功能,该功能可以准确识别单目及双目HTML标记,且具有良好的扩展性,能够支持HTML5及其他动态网页语言标签的识别及格式化。
关键词:PHP;HTML;格式化;标记
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)30-0116-02
Design and Implementation of Formatted HTML Code Function Based on PHP
LUO Liang-fu1, ZHANG Li2
(1.wuhan Guanggu Vocational College, Wuhan 430073, China; 2. Hubei Traffic Vocational and Technical College, Wuhan 430079, China)
Abstract: With the development of Internet technology, a large number of information systems using B/S architecture, resulting in a large number of HMTL pages, in order to solve a large number of HTML code is not easy to maintenance and management problems, using PHP as the main technology in the development of the HTML code formatting function, the function can accurately identify the monocular and binocular HTML markers, and has extended well, the identification and the format can support HTML5 and other dynamic web language tags.
Key words: PHP; HTML; format; sign
1 背景
互聯网时代的到来,促使HTML网页技术的应用变得非常广泛,目前几乎所有的应用信息系统都采用了B/S结构,一般中小型公司的页面可能达到几十个,而大型网站的页面更是多达上百个,信息系统页面的开发经常出现:开发周期长、开发人员多、代码不规范、代码不易管理等问题,导致后期难以进行扩展升级和维护,所以HTML代码的格式规范化问题显得非常总要,为了能有效解决HTML代码规范化问题,本文采用了PHP语言来实现格式化HTML代码的功能。
本功能采用的PHP语言是目前市场上非常流行的一种脚本语言,英文名是Hypertext Preprocessor,即超级文本预处理语言。本次设计采用PHP的原因是,一方面PHP能很好地嵌入到HTML中,对HTML的支持比较完善且运行的效率非常高;另外一方面,PHP能够在UNIX、LINUX、WINDOWS等主流操作系统平台中运行,使得格式化HMTL功能具有跨平台的特性,而且只需要对标记内容进行扩充,就能够支持多种动态网页标记语言的规范化。
2 Php文件的操作方法
HTML代码一般采用文件形式进行管理与存放,PHP在进行代码格式化前,需要先将HTML文件读入到内存中,PHP的文件操作一般分为3个步骤:打开文件,读写文件,关闭文件三步,具体的使用方法如下。
2.1 php文件打开函数
fopen函数将指定文件绑定到流中,函数原型是:fopen(filename,mode,include_path,context),其中filename是打开的文件或 URL,mode是该文件的访问类型(读r写/w/追加a等),成功将文件绑定到流,失败返回FALSE。
2.2 php文件关闭函数
fclose函数关闭通过fopen打开的文件,函数原型是:fclose(file),其中file是fopen函数返回的文件指,成功时返回TRUE,失败时返回 FALSE。
2.3 php文件读取字符函数
fgetc函数从文件指针处读取一个字符,函数原型是:fgetc(file),其中file是通过fopen函数打开的文件指针,成功时返回一个字符,指针指向文件末尾时返回 FALSE。
2.4 php写入文件函数
fwrite函数把 string 的内容写入文件指针处,函数原型是:fwrite(file,string,length),其中file:是要写入的文件,string是要写入的字符串,length是要写入的最大字节数,成功时返回要写入的字符数,错误时返回 FALSE。
3 Php数组的基本操作
HTML是一种标记语言,所有的元素标记都以中括号<>与普通文本进行区分,为了能在代码中对HTML标记进行识别与格式化,本次设计采用数据结构进行处理。PHP数组的基本操作包括:创建数组,添加数组元素,删除数组元素,具体使用方法如下所示:
3.1 php创建数组
array函数用来创建数组,函数原型是:array(key=>value),其中key是数组的键, value是数组元素的值,成功时返回数组的指针,失败返回NULL。endprint
3.2 php删除数组末尾元素
array_pop函数用来删除数组末尾元素,函数原型是:array_pop(array),其中array是被操作的数组,成功时返回数组的最后一个值。
3.3 php数组尾部添加元素函数
Array_pop函数用来在数组尾部添加新元素,函数原型是:array_push(array,value),其中array是要添加的数组,value1是要添加的值,返回新数组的长度。
4 格式化HTML代码功能的算法及关键代码
格式化HTML的核心思想是,对HTML代码在适当位置添加空格符与换行符,考虑到缩进的问题,所以需要用数组保存HTML标记的位置[2],另外还需考虑中括号中的内容是否是有效的HTML标记等问题,具体的算法步骤如下所示。
4.1 初始化HMTL代码
为了后续格式化HTML代码能够正常处理,需要先将空白行、每行左边的空格及tab字符删除,关键代码如下:
while(!feof($fp)) {$s=ltrim(fgets($fp));
if($s!='\r\n' && $s!='\n' && $s!='\r' && $s!='')
fwrite($fpc,$s); }
4.2 格式化HMTL代码
格式化HMTL代码是本功能的核心,因为HTML标记分成单目与双目标记,所以要分别对代码进行解析,首先判断前一个字符是否是\n且不是缩进数组的第一个元素,不是则换行,否则输出(缩进数组长度-1)*4个空格,后面输出<元素>与换行符。
接着判断前一个字符是否是\n且不是缩进数组的第一个元素,不是则换行[3],在代码之前输出(缩进数组长度-1)*4个空格,接着删除缩进数组中到当前下标的所有元素,然后输出HTML元素的关闭标签<元素/>,最后在HTML元素的关闭标签后输出换行。换行后输出普通文本,如果遇到HTML的<>标记,则输出4个空格,,关键代码如下:
if($f==false && $p!="\n") fwrite($tp,"\n",1); else $f=false;
fwrite($tp,"".$pp."",strlen("".$pp.""));
for($j=count($sj)-1;$j>=0;$j—) if($sj[$j]!=$pp) array_pop($sj);
else array_pop($sj);
4.3 运行效果图
图1 格式化前的html代码
图2 格式化后的html代码
5 结束语
为了提供HTML代码的管理与维护,设计实现了格式化HMTL代碼功能,采用了性能较高的PHP语言,能够支持单目与双目标记的识别,目前只支持对静态HTML标记进行识别与规范化,未来可以需要增加标记库来支持更多的动态标记语言。
参考文献:
[1] 康贤昆. PHP开发框架的研究与实现[D]. 天津: 天津大学, 2007.
[2] 徐孝日. 从HTML格式文件到TXT文件的转换[J]. 石油工业计算机应用, 2000(3):32-33.
[3] 边娜. 数据库内容转换为HTML格式文件的方法[J]. 科技情报开发与经济, 2001(2):39-40.