php mb_substr实现中文字符串截取无乱码的方法

注意:在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到
;extension=php_mbstring.dll把前面的;号去掉,这样mb_substr函数就可以生效了

例子

 代码如下 复制代码

<?php
$str = '这样一来我的字符串就不会有乱码^_^';

echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8');
//结果:这样一来我的字
echo "<br>";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
//结果:这样
?>

从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

 代码如下 复制代码

/**
 *   实现中文字串截取无乱码的方法
 */
function getSubstr($string, $start, $length) {
        if(mb_strlen($string,'utf-8')>$length){
            $str = mb_substr($string, $start, $length,'utf-8');
            return $str.'...';
        }else{
                return $string;
        }
}

时间: 2024-10-26 16:27:26

php mb_substr实现中文字符串截取无乱码的方法的相关文章

PHP 中文字符串截取无乱码的方法以及php汉字截取函数

昨天,在写代码时我遇到了一个中文字符串截取的问题,原本是想直接用substr()来,但这个是在单字节符下用的,对于多字节编码的汉字或是其它语言字符中,这个函数可能就用不上了,而且会容易截出乱码来!       现在就把我的下工作记录和总结给大家分享一下: 问题产生及使用案例网站:天气预报15天查询(http://tqybw.net) 问题时间:2013-10-31       解决思路:把汉字按一个汉字在编码下按其在完整性正则分割成数组,再根据需要取截取长度:       1.实现方法函数  

PHP中文字符串截断无乱码解决方法_php技巧

一个比较好用的字符串截取函数: function substring($str, $start, $length){ //比较好用字符串截取函数 $len = $length; if($length < 0){ $str = strrev($str); $len = -$length; } $len= ($len < strlen($str)) ? $len : strlen($str); $tmpstr = ""; for ($i= $start; $i < $le

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

substr截取 substr() 函数返回字符串的一部分.    代码如下 复制代码 <?php  $rest = substr("我是中国人", -1);    // returns "乱码"  echo $rest.'<br />';  $rest = substr("abcdef", -2);    // returns "ef"  echo $rest.'<br />';  $rest

php实现中文字串截取无乱码的方法

例1  代码如下 复制代码 function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)     {         if(function_exists("mb_substr"))             return mb_substr($str, $start, $length, $charset);         elseif(function_exists('iconv

php实现中文字符截取防乱码方法汇总_php技巧

大家在自己的程序中相信都会经常用到截取字符串吧,但是往往遇到截取中文字符串的时候会遇到乱码的问题.很是让人头疼,接下来介绍两种方法防止截取中文字符串的时候出现乱码的问题. 首先第一种,自己写好的一个函数方便使用 利用这个函数截取就不会出现乱码了. /** * 支持中文字符串截取 */ function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ switch($charset){ case 'utf

php中文字符串截取方法防止乱码解析

用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符"锯"成两半. 解决办法: 1.使用mbstring扩展库的mb_substr截取就不会出现乱码了. 2.自己书写截取函数,但效率不如用mbstring扩展库来得高. 3.如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0). substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_s

php中文字符串截取方法实例总结_php技巧

本文实例总结了php中文字符串截取方法,非常实用的技巧.分享给大家供大家参考.具体方法分析如下: 用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符"锯"成两半. 解决办法如下: 1.使用mbstring扩展库的mb_substr截取就不会出现乱码了. 2.自己书写截取函数,但效率不如用mbstring扩展库来得高. 3.如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0). substr()函数

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

本文实例讲述了php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8用法.分享给大家供大家参考,具体如下: /* *gb2312中文字符串截取 */ function substr_for_gb2312($str,$start,$len=null) { $totlelength = strlen($str); //特例情况 if ($len == null) $len = $totlelength; if ($len ==0) return ""

php中支持多种编码的中文字符串截取函数!_php技巧

支持多种编码的中文字符串截取函数!   复制代码 代码如下: /*     * @todo 中文截取,支持gb2312,gbk,utf-8,big5      *     * @param string $str 要截取的字串     * @param int $start 截取起始位置     * @param int $length 截取长度     * @param string $charset utf-8|gb2312|gbk|big5 编码      * @param $suffix