您当前的位置:首页 > 互联网教程

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

发布时间:2025-05-13 21:04:04    发布人:远客网络

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应用程序中的编码要一致就行。

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

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

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

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

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

3、functionsubstr_cut($str_cut,$length=30){

4、 if(strlen($str_cut)>;$length){

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

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

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

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

9、如果字符的ASCII码大于128,说明当前字符和下一个字符是属于一个汉字的。

10、则,$i++跳过对下一个字符的判断。

11、再结合循环中的$i++,实际上,当遇到一个汉字时,$i就会加2,从而正确的跳过汉字。

12、最终实现的效果是,$i变量指向的要么是半角的字符,要么是全角汉字的首字符,不会指向

13、全角汉字的第二个字符,所以,当$i>;=$length时,循环结束,使用

14、$str_cut=substr($str_cut,0,$i)."...";截取字符时自然也就不会出现乱码了。

15、本人在写一个程序时需要利用PHP从一段字符串中截取指定长度的一段字符下来。以前在写ASP的时候,参考动网的程序写过类似的程序,不过,还没用PHP写过。

16、想偷懒,看有不有现成的代码可以用。于是,在GOOGLE中输入:PHP截断字符后查找到一段代码。

三、php如何分割中文字符串

1、php分割中文字符串,如果直接用PHP函数“str_split”来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的。

2、所以,可以建立新的函数先把字符转成ASCII值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用PHP函数“join”在字符间插入百分号。

3、if($value>=192&&$value<=223)$split=2;

4、elseif($value>=224&&$value<=239)$split=3;

5、elseif($value>=240&&$value<=247)$split=4;

6、for($j=0;$j<$split;$j++,$i++){

7、$string="百度知道www.baidu.cn";

8、$arr1=str_split_utf8($string);