您的位置:

php实现中文字符的无乱码截断(可以在php中解决中文乱码的方式有)

本文目录一览:

这段php代码的意思?关于中文字串截取无乱码的方法

?php 

/*

$string 待截取的字符串

$start 截取的起点 数字

$length 截取的长度 数字

原理:逐字节读取遍历原字符串,1个中文占两个字节,所以截取2个作为1个整体,其他的都截取一个

将字符串重新连接返回

*/

function GBsubstr($string, $start, $length) {

    if(strlen($string)$length){

        $str=null;

        $len=$start+$length;

        for($i=$start;$i$len;$i++){

           if(ord(substr($string,$i,1))0xa0){//如果是GB编码的中文,一次截取2个字节

               $str.=substr($string,$i,2);

                $i++;

            }else{//否则,一次截取1个字节

               $str.=substr($string,$i,1);

            }

        }

        return $str.'…';

    }else{

        return $string;

    }

}

[php]如何在PHP中截取中文字串无乱码

一年前写的一个函数。用法与substr一样,支持中文。您也可以加以改进。

//截取字符串含数,对系统函数的改进,不会将中文变乱。

function mysubstr ($str,$start,$len=0,$cutchar="…") {

$str=str_replace(" ",' ',$str);

$str=str_replace("“",'“',$str);

$str=str_replace("”",'”',$str);

$str=str_replace("—",'—',$str);

$str=str_replace(""",'"',$str);

$str=str_replace(''',"'",$str);

$str=str_replace("",'',$str);

$str=str_replace("",'',$str);

$str=str_replace("",'',$str);

$str=preg_replace("/[\s]+/"," ",$str);

$tolen=strlen($str);

if(!($start==0 $len=$tolen)){

//为方便操作,先将起始值和长度值转换为正数

if($start0)$start=$tolen+$start;if($start0)$start=0;if($start$tolen)return "";

if($len=0)$len=($tolen+$len)-$start;if($len1)return "";

if($len$tolen)$len=$tolen;

for($i=0;$i$start;$i++){

if(ord(substr($str,$i,1))127){$i++;}

}

$start=$i; //起始位置计算完成

for($k=0;$k$len;$k++,$i++){

if(ord(substr($str,$i,1))127){$i++;$k++;}

}

$len=$k; //长度计算完成

$str=substr($str,$start,$len);

if($start0){$str=$cutchar.$str;}

if($start+$len$tolen){$str.=$cutchar;}

}

$str=str_replace("",'',$str);

$str=str_replace('"','"',$str);

$str=str_replace("'",''',$str);

$str=str_replace("",'',$str);

$str=str_replace("",'',$str);

return $str;

}

php 怎么截取汉字字符串?

?php 

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

echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8'); 

//结果:这样一来我的字 

echo "

"; 

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); 

//结果:这样 

?

首先

1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面。

2.在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到

;extension=php_mbstring.dll把前面的;号去掉,这样mb_substr函数就可以生效了

mb_strcut函数功能也可以截取字符串长度,下面实例具体看看区别在哪:

mb_substr();

php关于截取中文字符串的问题

php中文乱码的原因及解决方法

原因:1.php页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了;

解决方法:选择'utf8'或者'gb2312',这样客户浏览器会自动选择并出现正确的中文显示。注意:'utf8'或者'gb2312'都可以正确显示中文的。

2.数据库mysql中的编码类型不正确。

解决方法:创建数据库的时候,mysql

字符集选择'utf8',mysql

连接校对选择utf8_general_ci,这样创建的数据库用来存储中文肯定没有问题,

否则,你的中文首先在mysql中就是乱码,更不要期望它会给你在php页面中显示正确。

3.与平时的脚本编辑环境有关。比如,有些内容是自己用word写的,有些是用记事本写的,有些用editplus、ultraplus等文本编辑器。有时候就直接在dw中写中文了,

这样做不出乱码才怪呢。

解决方法:尽量用同一种编辑器。如果是拷贝来得既有的内容,建议用ultraplus中的编码转换功能把它转换成utf8或者gb2312。

到底转换成什么类型并不重要,关键要求你的php

web应用程序中的编码要一致就行。

4.编程访问

mysql时,建议添加一行代码:mysql_query("set

names

'gbk'");

这是解决方法

我没看懂你贴上来的程序

所以给你一些方法去解决乱码的问题

希望可以帮得上

如何利用PHP来截取一段中文字符串而不出现乱码

/*

功能:截取全角和半角混合的字符串以避免乱码

参数:

$str_cut 需要截断的字符串

$length 允许字符串显示的最大长度

*/

function substr_cut($str_cut,$length = 30){

if (strlen($str_cut) ; $length){

for($i=0; $i $length; $i++)

if (ord($str_cut[$i]) ; 128) $i++;

$str_cut = substr($str_cut,0,$i) . "...";

}

return $str_cut;

}