龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 切割html字符串,自动加上未结束的html标签

时间:2014-07-22 14:50来源: 作者: 点击:
分享到:
php切换html字符串的时候,就涉及到对html标签的切割,如果一个div只有开始,没有结束 当内容显示在文章中容易导致页面乱套。 br / 我辞职在家做我的网站的时候遇到了切割html字符串(
php切换html字符串的时候,就涉及到对html标签的切割,如果一个div只有开始,没有结束 当内容显示在文章中容易导致页面乱套。
我辞职在家做我的网站的时候遇到了切割html字符串(大家有时间帮我支持一下 易寻  http://www.yxsss.com
我本来是像在网上搜索一个 但是都不理想
于是自己写了一个 简单 明了 感觉还好用 于是贴出来大家分享一下

/*截取html字符串
 * @param $s 字符串
 * @param $zi 长度
 * @param $ne 没有结束符的html标签
 */
function G_htmlcut($s,$zi,$ne=',br,hr,input,img,'){
	$s=preg_replace('/\s{2,}/',' ',$s);
	$os=preg_split('/<[\S\s]+?>/',$s);
	preg_match_all('/<[\S\s]+?>/',$s,$or);
	$s='';
	$tag=array();
	foreach($os as $k => $v){
		if($v!='' && $v!=' '){
			$l=strlen($v);
			for($i=0;$i<$l;$i++){
				if(ord($v[$i]) > 127){
					$s.=$v[$i].$v[++$i].$v[++$i];
				}else{
					$s.=$v[$i];
				}
				$zi--;
				if($zi < 1){
					break 2;	
				}
			}
		}
		preg_match('/<\/?([^\s>]+)[\s>]{1}/',$or[0][$k],$t);
		$s.=$or[0][$k];
		if(strpos($ne,','.strtolower($t[1]).',')===false && $t[1]!='' && $t[1]!=' '){
			$k=array_search('</'.$t[1].'>',$tag);
			if($k!==false){
				unset($tag[$k]);
			}else{
				array_unshift($tag,'</'.$t[1].'>');
			}
		}
	}
	return $s.implode('',$tag);
}
精彩图集

赞助商链接