Heim  >  Artikel  >  Backend-Entwicklung  >  PHP sorgt dafür, dass HTML-Tags schließende Funktionscodes automatisch vervollständigen

PHP sorgt dafür, dass HTML-Tags schließende Funktionscodes automatisch vervollständigen

高洛峰
高洛峰Original
2016-12-01 14:58:061505Durchsuche

Kurze Erklärung einiger Codes:
Der erste ~(<[^>]+?>)~si
Dieser reguläre Ausdruck entspricht dem Inhalt in <…………>. Einfach ausgedrückt, alle .
Der zweite ~<([a-z0-9]+)[^/>]*?/>~si
Dieser reguläre Ausdruck entspricht dem Inhalt in <……/>. Es ist ein einzelnes geschlossenes Tag wie
Das dritte ~]*?>~si
Dieses reguläre Ausdruck stimmt mit überein. Das heißt, das End-Tag wie das vierte ~<([a-z0-9]+)[^/>]*?>~si
entspricht <. .. ...>. Dies unterscheidet sich vom ersten Tag, da HTML-Tags nur Zahlen und Buchstaben enthalten, wie zum Beispiel:


Der fünfte ~~si
Keine Erklärung erforderlich, HTMl-Kommentare
Der Rest ist im Quellcode zu sehen, PHP-Quellcode-Anhang:
Code kopieren Der Code lautet wie folgt:
/**
* Nehmen Sie HTML und vervollständigen und schließen Sie es automatisch
*
* param $html
*
* param $length
*
* param $end
*/
function subHtml($html, $length=50) {
$result = '';
$tagStack = array( $len = 0;
$contents = preg_split("~(<[^>]+?>)~si", $html, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); $contents as $tag ) {
if (trim($tag) == "") continue; ]*?/> ;~si", $tag)) {
$result .= $tag;
} else if (preg_match("~] *?>~si", $tag, $match)) {
if ($tagStack[count($tagStack)-1] == $match[1]) {
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;
}
} while (!empty($tagStack)) {
$result . = ''; $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; ($n < strlen($string)) {
$t = ord($string[$n]);
if ($t == 9 || $t == 10 || (32 < ;= $t && $t <= 126)) {
$tn = 1;
$n++>} elseif (194 <= $t && $t <= 223) {
$tn = 2;
$n += 2;
} elseif (224 <= $t && $t <= 239) {
$tn = 3; += 3;
} elseif (240 <= $t && $t <= 247) {
$tn = 4;
$n += 4; ;= $t && $t <= 251) {
$tn = 5;
$n += 5
} elseif ($t == 252 || $t == 253) {
$tn = 6;
$n += 6;
} else {
$n++>}
}
if ($noc > $length) {
$n -= $tn;}
$strcut = substr($string, 0 , $n>} else {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > [++$i] : $string[$i];
}
}
return $strcut
}
/**
* Chinesische Zeichenfolge abrufen
*
* param $string string
*
* param $start start position
*
* param $length length
*
* param $charset-Kodierung
*
* param $dot zusätzlicher String
*/
function mstrlen($str, $charset = '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]); 

return $length; 

$str = "
x1s
测试124"; 
echo subHtml($str); 
?> 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn