2017/06/14 PHP/Python/Java 1 Comments html无损截取_保留html标签 ```php /** * 字符串切割 * 功能:截取字符串(支持中文),如果字符串中包括html标签,截取的字符串则会保留完整的html标签 * @param string $string 输入字符串 * @param unknown $length 截取长度 * @param bool $mode 截取模式:0删去html标记(默认),1补齐html标记 * @param string $replace * @return string * @author 未来往事 * 说明: * 1.未考虑多字节字符,仅已字节做计数单位 * 2.未考虑可单独存在的标记 */ function html_substr($string, $length, $mode=0, $omit = '......') { //先截取指定长度的字符串开始--临时添加 if (strlen ( $string ) < $length) { // $string = substr ( $string, 0 ); $string = mb_substr($string,0,'',"utf-8"); } else { // $string = substr ( $string, 0, $length ); $string = mb_substr($string,0,$length,"utf-8"); } //先截取指定长度的字符串结束 // var_dump($string);die; $str= preg_split('/(<\!--.*-->|<[^>]*>)/s', $string, -1, PREG_SPLIT_DELIM_CAPTURE); foreach($str AS $k => $v) { if($v{0} != '<') { $length = $length - strlen($v); if($length < 0) $str[$k] = mb_substr($v, 0, $length, "utf-8"); }else{ $str[$k] = strtolower($v); } if($length <= 0){ break; } } //var_dump($str);die; $str = array_slice($str, 0, $k+1); $length = count($str); foreach($str as $k=>$v) { if($v{0} == '<' && $v[1] != '/') { $ch = str_replace('<', '', $v); for($i=$k+1; $i<$length && $str[$i]!=$ch; $i++); if($i == $length){ if($mode){ if($str[$length] == ''){ $str[$length] = ''; } if($ch == ''){ $ch = ''; } $str[$length] = $ch . $str[$length]; }else{ $str[$k] = ''; } } } } //var_dump($str);die; $str = join('', $str).$omit; return $str; } ``` 本文最后更新于 2019-06-27 13:51:06 并被添加「php函数」标签,已有 3663 位童鞋阅读过。 本文作者:未来往事 本文链接:https://felixway.cn/post/631.html 本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处 相关文章 使用fastcgi_finish_request实现异步操作提高页面响应速度 计算两个经纬度的距离/偏差米数_计算周边范围经纬度值 php平铺水印/图片添加水印/图片合成 URL数字安全码随机拼组生成及校验 PHP curl函数_解决curl返回空白问题
谢谢博主提供代码,已经拿走了,网站中需要提取文章摘要并保留html格式