php使HTML标签自动补全闭合函数代码_PHP
简单解释一些代码:
第一个 ~(]+?>)~si
这个正则是匹配中的内容。简单说是所有的。
第二个 ~]*?/>~si
这个正则是匹配中的内容。是单闭合标签 如
第三个 ~([a-z0-9]+)[^/>]*?>~si
这个正则是匹配中的内容。也就是结束标签 如
第四个 ~]*?>~si
匹配<......>中的内容。这和第一个是不一样的,这一个是真正的html标签,因为html标签只有数字和字母,如:
第五个 ~~si
不用解释了,HTMl的注释
剩下的可以看源代码了,php源码附件:
复制代码 代码如下:
/**
* 取HTML,并自动补全闭合
*
* 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);
foreach($contents as $tag) {
if (trim($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 {
$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) 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 += 3;
} elseif (240 $tn = 4;
$n += 4;
} elseif (248 $tn = 5;
$n += 5;
} elseif ($t == 252 || $t == 253) {
$tn = 6;
$n += 6;
} else {
$n++;
}
$noc++;
if ($noc >= $length) {
break;
}
}
if ($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for($i = 0; $i $strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++$i] : $string[$i];
}
}
return $strcut . $dot;
}
/**
* 得字符串的长度,包括中英文。
*/
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 = "
测试 | 124"; echo subHtml($str); ?> |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何在Go語言中使用正規表示式擷取HTML標籤內容導讀:正規表示式是一種強大的文字比對工具,它在Go語言中也有著廣泛的應用。在處理HTML標籤的場景中,正規表示式可以幫助我們快速擷取所需的內容。本文將介紹如何在Go語言中使用正規表示式擷取HTML標籤的內容,並給予相關程式碼範例。一、引入相關套件首先,我們需要導入相關的套件:regexp和fmt。 regexp包提供

HTML(HyperTextMarkupLanguage)是用於建立Web頁面的標準語言,它使用標籤和屬性來描述頁面上的各種元素,例如文字、圖像、表格和連結等等。但是,在處理HTML文字時,很難將其中的文字內容快速地提取出來用於後續的處理。這時,我們可以使用Python中的正規表示式來移除HTML標籤,以達到快速擷取純文字的目的。在Python中,正規表

PHP是一種常用的伺服器端腳本語言,廣泛應用於網站開發和後端應用程式開發。在開發網站或應用程式時,經常會遇到需要處理字串中的HTML標籤的情況。本文將介紹如何使用PHP去除字串中的HTML標籤,並提供具體的程式碼範例。為什麼需要移除HTML標籤?在處理使用者輸入或從資料庫中取得的文字時,經常會包含HTML標籤。有時我們希望在顯示文字時移除這些HTML標籤

如何使用Vue和Element-UI實現自動補全功能概述:自動補全是一種非常實用的功能,它能夠根據使用者的輸入提供相關的補全選項,提高使用者體驗。在Vue框架中,結合Element-UI元件庫,實現自動補全功能變得非常簡單。本文將介紹如何使用Vue和Element-UI來實現此功能,並給出對應的程式碼範例。步驟一:建立Vue專案並引入Element-UI庫首先,

PHP開發:實現搜尋關鍵字提示和自動補全功能在現今網路時代,搜尋引擎已成為人們獲取資訊的重要管道之一。而在網站開發中,搜尋功能的重要性不言而喻。為了提升使用者體驗和搜尋效果,實現搜尋關鍵字提示和自動補全功能是一項非常有價值且必要的開發任務。本文將為大家介紹如何在PHP開發中實現搜尋關鍵字提示和自動補全功能,並提供具體的程式碼範例。搜尋關鍵字提示是指在使用者輸入

在PHP中,可以使用htmlentities()函數來轉義html,能把字元轉換成HTML實體,語法「htmlentities(string,flags,character-set,double_encode)」。 PHP中也可以使用html_entity_decode()函數來反轉義html,把HTML實體轉換成字元。

String是Java中的final類,它是不可變的,這意味著我們不能改變物件本身,但我們可以更改物件的引用。可以使用String類別的replaceAll()方法從給定字串中刪除HTML標籤。我們可以使用正規表示式從給定字串中刪除HTML標記。從字串中刪除HTML標籤後,它將傳回一個字串作為普通文字。語法publicStringreplaceAll(Stringregex,Stringreplacement)範例publicclassRemoveHTMLTagsTest{&nbs

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。
