首頁  >  文章  >  後端開發  >  php使HTML標籤自動補全閉合函數程式碼

php使HTML標籤自動補全閉合函數程式碼

高洛峰
高洛峰原創
2016-12-01 14:58:061504瀏覽

簡單解釋一些程式碼: 
第一個 ~(]+?>)~si 
這個正規是符合中的內容。簡單說是所有的。 
第二個 ~]*?/>~si 
這個正規是符合中的內容。是單一閉合標籤如
 
第三個~([a-z0-9]+)[^/>]*?>~si 
這個正規是符合中的內容。也就是結束標籤 如 
第四個 ~]*?>~si 
符合<......>中的內容。這和第一個是不一樣的,這一個是真正的html標籤,因為html標籤只有數字和字母,如:

 
第五個~ ~si 
不用解釋了,HTMl的註解 
剩下的可以看原始碼了,php原始碼附件: 
複製程式碼 程式碼如下: 
/** 
* 取HTML,並自動補全閉合 

* param $html 

* param $length 

* param $end 
*/ 
function sub?php 
/**
* 取中文字串 

* param $string 字串 

* param $start 起始位 

* param $length 長度*串 
*/ 
function subHsubHt($html, $length=50) { 
$result = ''; 
$tagStack = array(); 
$len = 0; 
$contents = preg_split("~(]+?>)~si", $contents = preg_split("~(]+?>)~si", $contents = preg_split("~(]+?>)~si", $contents = preg_split("~(]+?>)~si", $contents = preg_split("~(]+?>)~si", $contents = preg_split("~(]+?>)~si", $1 html, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
foreach($contents as $tag) { 
if (trim($tag) == "") continue; 
if (preg_match($tag) == "") continue; 
if (preg_match."]*?/>~si", $tag)) { 
$result .= $tag; 
} else if (preg_match("~([a-z0-9]+) [^/>]*?>~si", $tag, $match)) { 
if ($tagStack[count($tagStack)-1] == $match[1]) { 
array_pop($tagStack);
$result .= $tag; 

} else if (preg_match("~]*?>~si", $tag, $match)) {
array_push($tagStack, $match[1]); 
$result .= $tag; 
} else if (preg_match("~~si", $tag)) { 
$result .= $tag; 
} else { 
if ($len + mstrlen($tag) $result .= $tag; 
$len += mstrlen($tag); 
} else
$len += mstrlen($tag); 
}
$str = msubstr($tag, 0, $length - $len + 1); 
$result .= $str; 
break; 


} while (!empty($$StackStack)) {resulttag .= '' . array_pop($tagStack) . '>'; 

return $result; 

/** 
* 得字串的長度,包括中英文。 
*/ 
function msubstr($string, $start, $dot&*/ 
function msubstr($string, $start, $dot = '', $charset = 'UTF-8') { 
$string = str_replace(array('&', '"', '', ' '), array('&', '" ', '', ' '), $string); 
if (strlen($string) return $string; 

if (strtolower($charset) == ' utf-8') { 
$n = $tn = $noc = 0; 
while ($n $t = ord($string[$n]); 
if ($t == 9 || $t == 10 || (32 $tn = 1; 
$n++; 
} elseif (194 $tn = 2; 
$n += 2; 
} elseif (224 }$tn = 3; 
$n += 31. (240 $tn = 4; 
$n += 4; 
} elseif (248 $tn = 5;
$n += 5; 
} elseif ($t == 252 || $t == 253) { 
$tn = 6; 
$n += 6; 
} noc++; 
if ($noc >= $length) { 
break; 


if ($noc > $length) { 
$n -= $tn; , $n); 
} else { 
for($i = 0; $i $strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++$i] : $string[$i]; 


return $strcut . $dot; 

/**&*/ 
function mstrlen($str. 'UTF-8') { 
if (function_exists('mb_substr')) { 
$length = mb_strlen($str, $charset); 
} elseif (function_exists('iconv_substr')) { 
$length = iconv_strlen($str, $charset); 
} else { 
preg_match_all("/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80 -xbf]|xf0[x90-xbf][x80-f][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/", $text, $ar) ; 
$length = count($ar[0]); 

回傳$長度; 

$str = "
x1s
測試 124"; 
echo subHtml($str); 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn