`
一个ID的距离
  • 浏览: 9194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

PHP截取中文字符串函数~包括GB2312和UT-8

阅读更多
<?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/ 
 
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') 

    if($code == 'UTF-8') 
    { 
        $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
        preg_match_all($pa, $string, $t_string); 
 
        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; 
        return join('', array_slice($t_string[0], $start, $sublen)); 
    } 
    else 
    { 
        $start = $start*2; 
        $sublen = $sublen*2; 
        $strlen = strlen($string); 
        $tmpstr = ''; 
 
        for($i=0; $i< $strlen; $i++) 
        { 
            if($i>=$start && $i< ($start+$sublen)) 
            { 
                if(ord(substr($string, $i, 1))>129) 
                { 
                    $tmpstr.= substr($string, $i, 2); 
                } 
                else 
                { 
                    $tmpstr.= substr($string, $i, 1); 
                } 
            } 
            if(ord(substr($string, $i, 1))>129) $i++; 
        } 
        if(strlen($tmpstr)< $strlen ) $tmpstr.= "..."; 
        return $tmpstr; 
    } 

 
$str = "abcd需要截取的字符串"; 
echo cut_str($str, 8, 0, 'gb2312'); 
?> 


<?php
    //截取中文字符串 
   //支持GB2312
    function mysubstr($str, $start, $len) { 
        $tmpstr = ""; 
        $strlen = $start + $len; 
        for($i = 0; $i < $strlen; $i++) { 
            if(ord(substr($str, $i, 1)) > 0xa0) { 
                $tmpstr .= substr($str, $i, 2); 
                $i++; 
            } else 
                $tmpstr .= substr($str, $i, 1); 
        } 
        return $tmpstr; 
    } 
?> 



<?php 
//截取utf8字符串 
function utf8Substr($str, $from, $len) 

    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. 
                       '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', 
                       '$1',$str); 

?>
分享到:
评论

相关推荐

    PHP 截取字符串函数整理(支持gb2312和utf-8)

    1、截取GB2312字符用的函数 PHP代码 复制代码 代码如下: &lt;?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = “”; $strlen = $start + $len; for($i = 0; $i &lt; $strlen; $i++) { if...

    php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例

    最后,函数通过`substr`截取字符串并返回结果。 接下来是`substr_for_utf8`函数,这个函数用于UTF-8编码的字符串截取。UTF-8是一种变长编码,英文字符占1字节,中文字符占3字节。函数同样接收三个参数,但这里需要...

    PHP 字符串编码截取函数(兼容utf-8和gb2312)

    复制代码 代码如下://截取字符串长度。支持utf-8和gb2312编码。若为gb2312,先将其转为utf-8,在utf-8的基础上截取然后再转换回来 function cut_string($str,$from=1,$length=10,$code=’utf-8′,$rear=’…’){ if...

    php自定义截取中文字符串-utf8版

    // 每次截取汉字后,截取字符串的终止偏移量增加2 } else { $newStr .= substr($str, $i, 1); } } return $newStr; } ``` 在上述代码中,我们首先获取输入字符串的总长度,然后通过一个for循环遍历字符串。...

    PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]

    在PHP中,使substr函数截取字符串末位会出现乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位不准确,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了乱码。

    php 截取utf-8格式的字符串实例代码

    php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。本文章向大家介绍一个php ...

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    在PHP编程中,处理字符串截取时,经常会遇到编码的问题,特别是当字符串包含中文字符时。本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要...

    php按单词截取字符串的方法

    总之,通过使用`explode`、`implode`和`array_splice`等PHP函数,我们可以实现按单词数量截取字符串的需求。这种方法简洁有效,适合在简单的文本处理场景下使用。如果遇到更复杂的文本处理需求,我们可能需要引入更...

    php截取utf-8中文字符串乱码的解决方法

    复制代码 代码如下:function utf8_substr($str,$len) { for($i=0;$i&lt;$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str) &gt; 127){ $i++; if($i&lt;$len){ $new_str[]=substr($str,0,3); $str=substr($...

    PHP乱码问题,UTF-8乱码常见问题小结

    此函数会根据UTF-8编码的特点,智能判断截断点,避免截断后的字符串出现乱码。 总之,解决PHP环境下的UTF-8乱码问题,关键在于确保所有环节(HTML、PHP、服务器配置、文件编码)的一致性。通过正确设置字符编码,...

    浅析PHP substr,mb_substr以及mb_strcut的区别和用法

    `mb_substr()`函数是多字节安全的,它会根据字符数量而不是字节来截取字符串。这意味着它能够正确地处理Unicode字符,如中文、日文等。它的语法为: ```php mb_substr(string $str, int $start, ?int $length = ...

Global site tag (gtag.js) - Google Analytics