首頁 後端開發 php教程 php使HTML标签自动补全闭合函数代码_PHP

php使HTML标签自动补全闭合函数代码_PHP

Jun 01, 2016 pm 12:08 PM
html標籤 自動補全

简单解释一些代码:
第一个 ~(]+?>)~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 = "
x1s
测试 124";
echo subHtml($str);
?>

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
如何在Go語言中使用正規表示式擷取HTML標籤內容 如何在Go語言中使用正規表示式擷取HTML標籤內容 Jul 14, 2023 pm 01:18 PM

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

如何使用Python正規表示式去除HTML標籤 如何使用Python正規表示式去除HTML標籤 Jun 22, 2023 am 08:44 AM

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

PHP如何去除字串中的HTML標籤? PHP如何去除字串中的HTML標籤? Mar 23, 2024 pm 09:03 PM

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

如何使用Vue和Element-UI實現自動補全功能 如何使用Vue和Element-UI實現自動補全功能 Jul 21, 2023 pm 02:53 PM

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

PHP開發:如何實作搜尋關鍵字提示與自動補全功能 PHP開發:如何實作搜尋關鍵字提示與自動補全功能 Sep 21, 2023 pm 01:01 PM

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

php中怎麼轉義html標籤 php中怎麼轉義html標籤 Feb 24, 2021 pm 06:00 PM

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

如何在Java中從給定的字串中刪除HTML標籤? 如何在Java中從給定的字串中刪除HTML標籤? Aug 29, 2023 pm 06:05 PM

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

HTML中起始標籤的示例是什麼? HTML中起始標籤的示例是什麼? Apr 06, 2025 am 12:04 AM

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

See all articles