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

php 非常实用的支持中英文字符串截取函数

时间:2014-07-13 02:01来源:网络整理 作者:网络 点击:
分享到:
非常实用的支持中英文字符串截取函数 这个函数是我在实际使用中需要用到而写的一个截取字符串函数,一般在列表页的简介中经常用到。函数中使用了 mb_substr(),故php需要开启 mbstr

这个函数是我在实际使用中需要用到而写的一个截取字符串函数,一般在列表页的简介中经常用到。

函数中使用了 mb_substr(),故php需要开启 mbstring 扩展。

<?php
/**
 * @param string $string 需要截取的字符串
 * @param string $sublen 需要截取的长度(英文和中文都计算一个)
 * @param string $tags 需要保留的标签
 * @param string $endTag 最后截取位置标签(为保证不出现排版错乱,必须与$tags中第一个标签成对)
 * @return string
 */
function _formatString($string,$sublen=100,$tags='<p><img>',$endTag='</p>'){
    $string=stripslashes($string);
    $string=strip_tags($string,$tags);
    $string=str_ireplace("\\t","",$string);
    $string=str_ireplace("\\r\\n","",$string);
    $string=str_ireplace("\\r","",$string);
    $string=str_ireplace("\\n","",$string);
    $string=str_ireplace(" ","",$string);
    $length=strlen($string);
    $tag_len=strlen($endTag);
    $new_str=mb_substr($string,0,$sublen,'utf-8');
    $new_len=strlen($new_str);
    $end_len=strripos($new_str,$endTag)+$tag_len;   //最后一次出现标签位置再加上自身标签长度
    if($new_len!=$end_len){
        if($end_len==$tag_len){
            for($i=$new_len; $i <=$length; $i++){
                $str=substr($string,0,$i);
                if(strpos($str,$endTag)){
                    $new_str=$str;
                    break;
                }
            }
        }else{
            $new_str=substr($new_str,0,$end_len);
        }
    }
    return $new_str;
}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接