`

[转]解决PHP截取中文字符串问题

    博客分类:
  • PHP
php 
阅读更多

解决PHP截取中文字符串问题

PHP截取字符串如果是英文那很好办,直接用substr就行了,一般不会出现乱码.中文就有点麻烦了.
下面给出两种解决办法:
(一)直接使用Multi-Byte函数库的mb_substr();函数就行了,实例代码如下

<?php  
echo mb_substr($str, $start, $length, $encoding); 
echo "<br />"; 
?> 

 

这种方法简单,快速,安全,漂亮,诱惑...反正什么好词都可以形容它,但是,可惜我的GoDaddy主机不支持,所以得另寻出路
(二)自定义截取中文字符串函数,基本上就是仿照mb_substr写个函数,直接调用罢了,以下为我找到的代码,其实很简单

 

<?php  
function  substr_cn($string_input,$start,$length) 
{ 
    /* 功能: 
     * 此算法用于截取中文字符串 
     * 函数以单个完整字符为单位进行截取,即一个英文字符和一个中文字符均表示一个单位长度 
     * 参数: 
     * 参数$string为要截取的字符串, 
     * 参数$start为欲截取的起始位置, 
     * 参数$length为要截取的字符个数(一个汉字或英文字符都算一个) 
     * 返回值: 
     * 返回截取结果字符串 
     * */ 
    $str_input=$string_input; 
    $len=$length; 
    $return_str=""; 
    //定义空字符串 
    for ($i=0;$i<2*$len+2;$i++) 
        $return_str=$return_str." "; 
    $start_index=0; 
    //计算起始字节偏移量 
    for ($i=0;$i<$start;$i++) 
    { 
        if (ord($str_input{$start_index}>=161))          //是汉语      
        { 
            $start_index+=2; 
        } 
        else                                          //是英文 
        { 
            $start_index+=1; 
        }         
    }     
    $chr_index=$start_index; 
    //截取 
    for ($i=0;$i<$len;$i++) 
    { 
        $asc=ord($str_input{$chr_index}); 
        if ($asc>=161) 
        { 
            $return_str{$i}=chr($asc); 
            $return_str{$i+1}=chr(ord($str_input{$chr_index+1})); 
            $len+=1; //结束条件加1 
            $i++;    //位置偏移量加1 
            $chr_index+=2; 
            continue;             
        } 
        else  
        { 
            $return_str{$i}=chr($asc); 
            $chr_index+=1; 
        } 
    }     
    return trim($return_str); 
}//en

 

原文网址:http://www.cnblogs.com/likebeta/archive/2011/04/17/2005955.html

 

分享到:
评论

相关推荐

    php截取指定字符串之间的字符串的类.zip

    一个php截取指定字符串之间的字符串的类,介绍一个php截取指定字符串之间的字符串的类,需要的朋友可以自行下载学习使用。

    PHP中如何截取中文字符串

    在PHP中处理中文字符串截取是一项常见的任务,尤其是在网页开发中。中文字符串通常包含UTF-8编码的字符,这与ASCII编码的英文字符串处理方式有所不同。以下将详细讲解如何在PHP中正确截取中文字符串。 首先,我们...

    一个php截取指定字符串之间的字符串的类

    这个名为“一个php截取指定字符串之间的字符串的类”的资源提供了一个专门用于在字符串中截取特定部分的类。此类可以帮助开发者更加灵活和高效地操作字符串,尤其是在处理HTML、XML或者其他结构化数据时。 字符串...

    一个php截取指定字符串之间的字符串的类.zip

    - `substr()`: 截取字符串的一部分,基于提供的开始位置和长度。 - `strstr()`: 返回字符串首次出现某个子串后的部分。 - `str_replace()`: 替换字符串中的一部分。 - `preg_match()`: 使用正则表达式进行匹配。...

    php不破坏单词截取子字符串类.zip

    "php不破坏单词截取子字符串类.zip" 提供的解决方案就是这样一个专门用于不破坏单词的字符串截取类库。 这个类库的核心功能是实现智能截取,确保截取的字符串在边界处始终落在单词的开始或结束位置,而不是随意中断...

    php不破坏单词截取子字符串类

    在PHP编程语言中,处理字符串是一项常见的任务,其中包括截取字符串。然而,普通的截取方法如`substr()`可能在处理英文文本时导致单词被割裂,影响可读性。为了解决这个问题,我们可以使用特定的类或函数来实现“不...

    php通用截取字符串.zip

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

    substring截取字符串 字符串截取方法

    Substring截取字符串字符串截取方法 Substring截取字符串字符串截取方法是计算机编程中一种常见的操作,它指的是从字符串中提取某一段子字符串,在不同的编程语言中有不同的实现方式。下面将介绍Substring截取字符...

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

    在Python中,可以使用内置的`[start:end]`切片操作来截取字符串。如果要考虑字节,我们需要使用`encode()`方法将字符串转化为字节串,因为Python的切片默认是基于字符的。例如: ```python s = "你好,世界" byte_s...

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

    这段代码会正确地截取字符串,即使其中包含了中文和英文字符。 然而,有时候我们可能需要根据字节数而不是字符数来截取,例如限制输出的字节数。这时,我们需要计算每个字符的字节数,并相应调整`start`和`length`...

    php 截取包含中文的字符串

    php 截取包含中文的字符串

    PHP按符号截取字符串的指定部分的实现方法

    字符串截取在php开发中是比较常用的; 而且对于截取的需求也有很多种; 有时我们想截取最后一个斜杠’/’后面的数字; 有时我们又需要截取第一个斜杠’/’前面的内容判断用户输入的url链接带不带http://等等; 字符...

    php截取字符串

    本篇将围绕“PHP截取字符串”这一主题,深入探讨相关的知识点。 首先,我们需要了解PHP中最常用的字符串截取函数——`substr()`。`substr()`函数允许我们从字符串的指定位置开始,截取指定长度的字符。其基本语法...

    PHP截取中文字符串的问题

    解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的。

    PHP截取字符串,生成文章摘要

    在PHP中,截取字符串并生成文章摘要是常见的任务,特别是在构建内容管理系统或者博客平台时。这个过程涉及到字符串处理和文本分析技术。下面我们将详细探讨如何使用PHP来实现这一功能。 首先,PHP提供了多种内置...

    php字符串截取.pdf

    #### 二、GB2312中文字符串截取 **1.1 GB2312字符串截取函数** ```php function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for ($i = 0; $i $strlen; $i++) { if (ord(substr($...

    php 截取字符串

    这篇博客将深入探讨PHP如何截取字符串,并通过实例来演示其具体用法。 标题中的“php 截取字符串”主要涉及PHP中的两个核心函数:`substr()` 和 `mb_substr()`。`substr()` 是PHP中用于截取字符串的基本函数,而`mb...

    php截取中文字符串不乱码的方法

    在处理中文字符时,编码问题往往是一大挑战,特别是在进行字符串截取操作时。PHP 提供了多种方式来处理这种情况,以确保截取的中文字符串不会出现乱码。本篇文章将详细探讨如何在 PHP 中使用 `mb_substr` 函数来正确...

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

    在进行字符串截取操作时,选择适当且支持多字节的函数,确保文件和输出的编码一致,这些都是避免编码问题的关键。在提供的`test.php`文件中,很可能包含了使用`mb_strcut`或其他类似函数处理UTF-8字符串的示例代码,...

    php中的一个中文字符串截取函数

    7. 在使用cnSubStr函数时,需要定义一个字符串和截取的长度,然后使用函数cnSubStr截取字符串,并输出结果。 8. cnSubStr函数可以正确地处理中文字符串,并且可以根据需要截取的长度来确定截取的字符串长度。 9. ...

Global site tag (gtag.js) - Google Analytics