`

PHP中截取UTF-8中文字符串

    博客分类:
  • PHP
 
阅读更多

 

/**
 * 
 * @todo 截取中文字符串不乱码
 * @param string $str
 * @param int $start
 * @param int $length
 * @param string $charset
 * @param string $suffix
 */
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) {
     if(function_exists("mb_substr"))
         $slice = mb_substr($str, $start, $length, $charset);
     elseif(function_exists('iconv_substr')) {
         $slice = iconv_substr($str,$start,$length,$charset);
     }else{
         $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
         $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
         $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
         $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
         preg_match_all($re[$charset], $str, $match);
         $slice = join("",array_slice($match[0], $start, $length));
     }
     return $suffix ? $slice.'...' : $slice;
 }

 

 

分享到:
评论

相关推荐

    解析使用substr截取UTF-8中文字符串出现乱码的问题

    给定的代码提供了一个名为`cutstr`的函数示例,用于截取UTF-8字符串: ```php function cutstr($sourcestr, $cutlength) { // ... } ``` 这个函数通过检查每个字符的ASCII值来判断它是一字节、二字节还是三字节的...

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

    在处理PHP中的字符串时,尤其是涉及到UTF-8编码的中文字符串时,常常会遇到字符串被错误地截取,从而产生乱码的问题。这通常是因为UTF-8编码中,一个中文字符可能由多个字节组成,简单的按字节截取可能会将一个中文...

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

    在上述内容中,提供了处理UTF-8字符串截取的示例代码,其核心思想在于正确处理字符串的多字节字符。代码示例中定义了一个函数`truncate_utf8_string`,该函数接收三个参数:要截取的字符串`$string`,截取长度`$...

    PHP UTF-8 等宽度截取中英文字符.txt

    示例代码中定义了`u8_title_substr`函数,通过循环遍历字符串中的每个字符,根据字符的编码类型(1、2、3或4字节)累加相应的权重值,最终实现了等宽度截取UTF-8编码的中英文字符的功能。 #### 五、注意事项 - 在...

    PHP 不区分中英文截取utf8字符串

    例如,如果我们要从一个UTF-8字符串的第5个字符开始截取,截取10个字符,代码如下: ```php $text = "你好,世界Hello, World!"; $result = mb_substr($text, 5, 10, 'UTF-8'); echo $result; ``` 这段代码会正确...

    PHP中如何截取中文字符串

    在上面的代码中,`mb_substr()`函数的第三个参数指定了字符编码,确保了正确处理UTF-8字符串。 2. **使用iconv扩展** `iconv()`函数可以转换字符串的编码,同时也可以配合`strncasecmp()`函数实现截取: ```php $...

    以utf8格式截取的字符串编码

    在PHP中,可以使用`mb_strcut`函数来安全地截取UTF-8字符串。`mb_strcut`是多字节字符串函数,它允许我们指定字符串的起始位置和长度,以正确地处理非ASCII字符。例如: ```php $text = "你好,世界!这是一个UTF-8...

    PHP正确解析UTF-8字符串技巧应用

    php /* 程序功能,$str是中英文混合的UTF-8编码字符串, 将此字符串根据UTF-8的编码规则正确的解码并显示。 */ $str = ‘今天非常Happy,所有决定去KFC吃可乐鸡翅!!!’; /* $str 是待截取的字符串 $len 是截取的字符...

    php_web项目中utf-8的问题.do

    然而,由于UTF-8编码下的中文字符占用三个字节,若截取不完整则会导致乱码或“?”的显示。为了解决这个问题,可以编写如下函数对标题进行安全截取: ```php function get_brief_str($str, $max_length) { if ...

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

    本篇主要介绍如何自定义截取UTF-8编码下的中文字符串。 在UTF-8编码中,一个中文字符通常由3个字节组成,而英文字符、数字或一些特殊符号只占1个字节。因此,常规的字符串截取函数(如`substr()`)在处理中文字符串...

    字符串按照指定的字节数来截取

    byte_s = s.encode('utf-8') # 将字符串转为UTF-8编码的字节串 substring = byte_s[:n] # 截取前n个字节 ``` 这里的`n`是你要截取的字节数。注意,由于字符可能由多个字节组成(如UTF-8编码中的多字节字符),因此...

    php中截取字符串支持utf-8

    在PHP中处理UTF-8字符串时,开发者经常会遇到需要截取字符串的需求。然而,默认情况下,PHP中的`substr`函数并不支持直接截取UTF-8编码的字符串。因此,为了正确处理UTF-8字符串,我们需要使用专门针对UTF-8设计的...

    php字符串截取.pdf

    - 当`$code`为'UTF-8'时,使用正则表达式匹配UTF-8字符并进行截取;当为'GB2312'时,通过调整开始位置和长度来适应GB2312的双字节特性。 **3.1.2 示例代码及输出结果** - 由于原文未给出完整的GB2312编码下的示例...

    Carmela提供基于PHP,PHP扩展,JAVA,C++等语言的一套处理4四节UTF-8解决方案

    6. **前端渲染**:考虑到UTF-8字符的显示,项目可能使用了HTML的`meta`标签来声明文档的字符集,确保浏览器正确解析和显示内容。 7. **PHP扩展**:Carmela可能使用了自定义或第三方PHP扩展来增强UTF-8处理能力,...

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

    2. 截取UTF-8编码的字符串 对于UTF-8编码的字符串,由于UTF-8是一种变长的编码方式,一个字符可能由1到4个字节组成,这使得截取处理变得更加复杂。可以使用正则表达式结合preg_replace()函数来实现对UTF-8编码字符串...

    php通用截取字符串.zip

    "php通用截取字符串"这个主题主要涉及如何在PHP中对字符串进行截取,以便获取我们感兴趣的特定部分。这通常用于显示预览、处理用户输入或者从长文本中提取关键信息。在PHP中,有多种方法可以实现字符串截取,下面...

Global site tag (gtag.js) - Google Analytics