大佬教程收集整理的这篇文章主要介绍了php截取html字符串及自动补全html标签的方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了php截取html字符串及自动补全html标签的方法。分享给大家供大家参考。具体分析如下:
这里总结一下关于利用php截取html字符串自动补全html标签,实际开发中会经常碰到,很多人直接先Strip_tags过滤掉html标签,但是就只剩下纯文本了,可读性非常差,下面是一个函数,代码如下:
$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("~<([a-z0-9]+)[^/>]?/>~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("~<([a-z0-9]+)[^/>]?>~si",$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,$length-$len+1);
$result .= $str;
break;
}
}
}
while(!emptyempty($tagStack)){
$result .= '</'.array_pop($tagStack).'>';
}
return $result;
}
/**
if(strtolower($charset) == 'utf-8') {
$n = $tn = $noc = 0;
while($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; $n += 3;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4;
} elseif(248 <= $t && $t <= 251) {
$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,$n);
} else {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($String[$i]) > 127 ? $String[$i].$String[++$i] : $String[$i];
}
}
return $strcut.$dot;
}
/**
if ($str[$i+1]=='/')
{
$ptag=&$etag ;
$k=&$ep;
$i+=2;
}
else
{
$ptag=&$stag;
$i+=1;
$k=&$sp;
}
for(;$i<$leng;$i++)
{
if ($str[$i] == ' ')
{
$ptag[$k] = implode('',$ptag[$k]);
$k++;
break;
}
if ($str[$i] != '>')
{
$ptag[$k][]=$str[$i];
conTinue;
}
else
{
$ptag[$k] = implode('',$ptag[$k]);
$k++;
break;
}
}
$i++;
conTinue;
}
else
{
//$re.=substr($str,1);
$word++;
$i++;
}
}
foreach ($etag as $val)
{
$key1=array_search($val,$stag);
if ($key1 !== falsE) unset($stag[$key]);
}
foreach ($stag as $key => $val)
{
if (in_array($val,array('br','img'))) unset($stag[$key1]);
}
array_reverse($stag);
$ends = '</'.implode('></',$stag).'>';
$re = substr($str,$i).$ends;
if($morE) $re.='...';
return $re;
}
$Stack = array(); $posStack = array();
@H_415_0@mb_ereg_search_init($Foremost,$re,'i');while($pos = mb_ereg_search_pos()){
$match = mb_ereg_search_getregs();
/* [Child-matching Formulation]:
$matche[1] : A "/" charactor inDicaTing whether current "<...>" Friction is
Closing Part
$matche[2] : Element Name.
$matche[3] : Right > of a "<...>" Friction
*/
if($match[1]==""){
$Elem = $match[2];
if(mb_eregi($Single,$Elem) && $match[3] !=""){
conTinue;
}
希望本文所述对大家的php程序设计有所帮助。
以上是大佬教程为你收集整理的php截取html字符串及自动补全html标签的方法全部内容,希望文章能够帮你解决php截取html字符串及自动补全html标签的方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。