截取完整的字符串(截取字符串的方法有哪些)

lxf2023-03-18 16:45:02

本文主要介绍php截取html字符串并自动完成html标签的方法,是php操作html非常实用的技巧,具有一定的参考价值。有需要的朋友可以参考一下。

这篇文章演示了php拦截html字符串并自动完成html标签的方法。分享给大家,供大家参考。具体分析如下:

下面总结一下如何用php拦截html字符串自动完成html标签,这是实际开发中经常遇到的。很多人直接用strip_tags过滤掉html标签,只剩下纯文本,可读性很差。下面是一个函数,代码如下:
复制代码如下:

/**
* 截取HTML,并自动补全闭合
* @param $html
* @param $length
* @param $end
*/
function subHtml($html,$length) {
$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("~]*?>~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) < $length){
$result .= $tag;
$len += mstrlen($tag);
}else {
$str = msubstr($tag,0,$length-$len+1);
$result .= $str;
break;
}

}
}
while(!emptyempty($tagStack)){
$result .= '';
}
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('&', '"', '',' '), $string);
if(strlen($string)