search
HomeBackend DevelopmentPHP Tutorialphp使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 = "
x1s
测试 124";
echo subHtml($str);
?>

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何使用Python正则表达式去除HTML标签如何使用Python正则表达式去除HTML标签Jun 22, 2023 am 08:44 AM

HTML(HyperTextMarkupLanguage)是用于创建Web页面的标准语言,它使用标签和属性来描述页面上的各种元素,例如文本、图像、表格和链接等等。但是,在处理HTML文本时,很难将其中的文本内容快速地提取出来用于后续的处理。这时,我们可以使用Python中的正则表达式来去除HTML标签,以达到快速提取纯文本的目的。在Python中,正则表

如何在Go语言中使用正则表达式提取HTML标签内容如何在Go语言中使用正则表达式提取HTML标签内容Jul 14, 2023 pm 01:18 PM

如何在Go语言中使用正则表达式提取HTML标签内容导读:正则表达式是一种强大的文本匹配工具,它在Go语言中也有着广泛的应用。在处理HTML标签的场景中,正则表达式可以帮助我们快速提取需要的内容。本文将介绍如何在Go语言中使用正则表达式提取HTML标签的内容,并给出相关代码示例。一、引入相关包首先,我们需要导入相关的包:regexp和fmt。regexp包提供

PHP开发:如何实现搜索关键词提示和自动补全功能PHP开发:如何实现搜索关键词提示和自动补全功能Sep 21, 2023 pm 01:01 PM

PHP开发:实现搜索关键词提示和自动补全功能在现今互联网时代,搜索引擎已经成为人们获取信息的重要渠道之一。而在网站开发中,搜索功能的重要性不言而喻。为了提升用户体验和搜索效果,实现搜索关键词提示和自动补全功能是一项非常有价值和必要的开发任务。本文将为大家介绍如何在PHP开发中实现搜索关键词提示和自动补全功能,并提供具体的代码示例。搜索关键词提示是指在用户输入

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中怎么转义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

推荐几款功能强大的C语言编辑器推荐几款功能强大的C语言编辑器Feb 19, 2024 pm 01:40 PM

在计算机编程领域,C语言一直以其简洁、高效的特性受到广大开发者的青睐。而要在C语言编程中提高效率,选择一款好的C语言编辑器是非常重要的。本文将介绍几款功能强大的C语言编辑器,帮助开发者更好地进行C语言编程。VisualStudioCodeVisualStudioCode(简称VSCode)是一款免费、开源的跨平台编辑器,由微软公司开发。它支持多种语

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools