本文目录一览:
- 1、这段php代码的意思?关于中文字串截取无乱码的方法
- 2、[php]如何在PHP中截取中文字串无乱码
- 3、php 怎么截取汉字字符串?
- 4、php关于截取中文字符串的问题
- 5、如何利用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;
}