日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php html标签闭合,php截取字符串,完美html自动闭合

發布時間:2023/12/19 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php html标签闭合,php截取字符串,完美html自动闭合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//截取字符串, html自動閉合

public function str_cut_html($string, $length=450) {

//截取原指定長度

$substr=mb_substr($string, 0, $length, 'UTF-8');

//echo $string;die();

//剩余部分

$remain=mb_substr($string, $length,mb_strlen($string, 'UTF-8'),'UTF-8');

//echo $remain;die();

//剩余小于150 直接使用原string

if(strlen($remain)<150) return $string;

//解決前面截取出現斷開標簽的問題,如

被截成

$substr_60=mb_substr($substr, -60, 60, 'UTF-8'); //被截取的字符串后60字符

//echo $substr_60;die();

$remain_60=mb_substr($remain, 0, 60, 'UTF-8'); //剩余前60字符

//echo $remain_60;die();

//剩余前60字符標簽數

preg_match_all('/(<.>)/is',$remain_60,$_tags11);

//print_r($_tages);die();

$tags11=(isset($_tags11[1]) && $_tags11[1]) ? $_tags11[1] : array();

$tags11=count($tags11);

//print_r($tags11);die();

//被截取的字符串后60字符標簽數

preg_match_all('/(<.>)/is',$substr_60,$_tags22);

//print_r($_tages);die();

$tags22=(isset($_tags22[1]) && $_tags22[1]) ? $_tags22[1] : array();

$tags22=count($tags22);

//print_r($tags22);die();

//前后120個字符標簽數

preg_match_all('/(<.>)/is',$substr_60.$remain_60,$_tags33);

//print_r($_tages);die();

$tags33=(isset($_tags33[1]) && $_tags33[1]) ? $_tags33[1] : array();

$tags33=count($tags33);

//print_r($tags33);die();

//存在斷開標簽

$bbb='';

if(($tags11+$tags22)

$r=strpos($remain_60, '>'); //第一個標簽右>的位置

$bbb=mb_substr($remain_60, 0, $r+1, 'UTF-8');

$remain=mb_substr($remain, $r+1);

}

//echo $r;die();

//echo $bbb;die();

//補全斷開標簽

$substr=$substr.$bbb;

//echo $substr;die();

//匹配截取內容中所有完整標簽

preg_match_all('/(<.>)/is',$substr,$_tages);

//print_r($_tages);die();

$tages=(isset($_tages[1]) && $_tages[1]) ? $_tages[1] : array();

//print_r($tages);die();

//自閉合標簽集特殊處理

??????? $ignore=array('
','


','
','
', '', '

'', '', '',

'', '', '','','',

);

//開始結束標簽集統計

$be=$en=array();

//$_tmp=array();

foreach($tages as $v) {

$v=str_replace(array('?? ','? '), array(' ',' ') ,strtolower($v));

??????????? //將

if(strpos($v, "'") || strpos($v, '"')) {

$v=substr($v, 0 , strpos($v, ' ')).'>';

}

if(in_array($v, $ignore)) continue;

if(strpos('@@@'.$v, '/')) {

if(isset($en[$v])) {

$en[$v]++;

} else {

$en[$v]=1;

}

} else {

if(isset($be[$v])) {

$be[$v]++;

} else {

$be[$v]=1;

}

}

//$_tmp[]=$v;

}

//print_r($be);print_r($en);die();

//需要被閉合的標簽位置統計

$where=array();

foreach($be as $k=>$c) {

$k=str_replace('

//echo $k;die();

if(isset($en[$k]) && $c==$en[$k]) continue; //標簽閉合無問題

if(isset($en[$k]) && $c

$d=isset($en[$k]) ? $c-$en[$k] : $c; //開始標簽比閉合標簽多的次數

//echo $k.$d;die();

$need[$k]=$d;

$start=0;

for($i=1; $i<=$d; $i++) {

$aa=strpos($remain, $k, $start>0?($start+strlen($k)):$start); //每個未閉合標簽位置

$start=$aa>0?$aa:0;

$where[$k]=$start+strlen($k);

}

}

//print_r($where);die();

sort($where);

//print_r($where);die();

$last=array_pop($where);

//echo $last;die();

//截取后面被閉合標簽及前面內容

$need=substr($remain, 0, $last);

//echo $need;die();

$substr.=$need;

return $substr;

}

總結

以上是生活随笔為你收集整理的php html标签闭合,php截取字符串,完美html自动闭合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。