array_pop
(
$tagStack
);
$result
.=
$tag
;
}
}
else
if
(preg_match("~<([a-z0-9]+)[^/>]*?>~si",
$tag
,
$match
)) {
array_push
(
$tagStack
,
$match
[1]);
$result
.=
$tag
;
}
else
if
(preg_match("~<!--.*?-->~si",
$tag
)) {
$result
.=
$tag
;
}
else
{
if
(
$len
+ mstrlen(
$tag
) <
$length
) {
$result
.=
$tag
;
$len
+= mstrlen(
$tag
);
}
else
{
$str
= msubstr(
$tag
, 0,
$length
-
$len
+ 1);
$result
.=
$str
;
break
;
}
}
}
while
(!
empty
(
$tagStack
)) {
$result
.= '</' .
array_pop
(
$tagStack
) . '>';
}
return
$result
;
}
/**
*
取中文字符串
*
* param $string
字符串
*
* param $start
起始位
*
* param $length
长度
*
* param $charset
编码
*
* param $dot
附加字串
*/
function
msubstr(
$string
,
$start
,
$length
,
$dot
= '',
$charset
= 'UTF-8') {
$string
=
str_replace
(
array
('&', '"', '<', '>', ' '),
array
('&', '"', '<', '>', ' '),
$string
);
if
(
strlen
(
$string
) <=
$length
) {
return
$string
;
}
if
(
strtolower
(
$charset
) == 'utf-8') {
$n
=
$tn
=
$noc
= 0;