php标记关闭自动完成功能代码
简单地解释一下代码:第一~(+)
这种规律性是比赛的内容。
第二类
这种规律性是匹配的内容,是一个单一的封闭标签,如
第三~
这种规律性是匹配的内容,即结束标记,如
第四~
这是一个真正的HTML标签,因为HTML标签只有数字和字母,比如:
第五~Si
不用解释,HTML的注释
剩下的可以看看源代码,php源代码附录:
复制代码代码如下所示:
< PHP
* html,并自动完成关闭
*
*返回HTML
*
*数组的长度
*
*返回结束
* /
功能subhtml($ HTML,长度= 50美元){
结果=;
tagstack美元=阵();
$ = 0;
内容preg_split美元=(~(} >)~四,HTML 1美元,preg_split_no_empty | preg_split_delim_capture);
foreach($内容达标签){
如果(修剪标签)= 继续);
如果(preg_match(~ } * / ~寺
$结果=标签;
} else if(preg_match(~ } * > ~硅
如果($ tagstack {计数($ tagstack)- 1 } = = $匹配{ 1 }){
array_pop($ tagstack);
$结果=标签;
}
} else if(preg_match(~ } * > ~硅
array_push(tagstack美元美元,比赛{ 1 });
$结果=标签;
} else if(preg_match(~ ~硅
$结果=标签;
{人}
如果($ len + mstrlen($标记)< $长度){
$结果=标签;
$ len = mstrlen($标记);
{人}
$str = msubstr($标记,0美元美元,长镜头+ 1);
$结果;
打破;
}
}
}而!空(美元tagstack)){
结果=;
}
返回$结果;
}
*取中文字符串
*
*字符串数组
*
*数组开始位置
*
*数组长度
*
*数组字符集编码
*
*点额外的字符串数组
* /
功能msubstr(美元美元美元开始,字符串,长度,点=美元,美元'utf-8字符集){
$字符串str_replace(array(' ',' ',' ',' '),阵列(' ',' ',' ','),为字符串);
如果(strlen(字符串长度<=美元)美元){
返回$字符串;
}
如果(strtolower($字符集)= = 'utf-8){
$ = $ = $ $ NOC = 0;
而($ n<strlen($字符串)){
$ T = ORD($字符串{ $ n });
如果($ T = = 9 = = 10 $ T | | | |(32 < = $ T $ T <= 126)){
美元= 1;
美元+;
} elseif(194 < = $ T $ T <= 223){
美元= 2;
$ = 2;
} elseif(224 < = $ T $ T <= 239){
美元= 3;
$ = 3;
} elseif(240 < = $ T $ T <= 247){
美元= 4;
$ = 4;
} elseif(248 < = $ T $ T <= 251){
美元= 5;
$ = 5;
($ T = = 252 | | } { $ T = = 253)
美元= 6;
$ = 6;
{人}
美元+;
}
美元+;
如果($ NOC = $长度){
打破;
}
}
如果($ $ $长度){
美元=美元;
}
strcut美元= substr($ 0,$字符串,n);
{人}
($ i = 0;$ i $ $长度;$ + +){
strcut美元= ORD($字符串{我})> 127美元美元美元字符串{我} { C++字符串我}:美元美元美元字符串{我};
}
}
返回的strcut。合点;
}
*字符串的长度,包括中文和英文。
* /
功能mstrlen($str,$字符集= 'utf-8){
如果(function_exists('mb_substr ')){
$长度= mb_strlen($str,$字符集);
} elseif(function_exists('iconv_substr ')){
$长度= iconv_strlen($str,$字符集);
{人}
preg_match_all( / { X01 - x7f } | { XC2 - XDF } { X80 - XBF } | xe0 { xA0 - XBF } { X80 - | XBF } { XE1 - XeF } { X80 - XBF } { X80 - xf0 | XBF } { X90 - x80-f XBF } { } { X80 - | XBF } { } { xf7 XF1 - X80 - XBF } { X80 - XBF } { X80 - XBF } /
长度=计数($ 0 { });
}
返回$长度;
}
$str =x1s测试124;
回声subhtml($str);
>