注册 登录  
 加关注

网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

xiaozhuge0825的博客

 
 
 

日志

 
 

php chr() ord()中文截取乱码问题解决方法  

2009-09-16 09:09:55|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

[复制此代码]CODE:

<?php

$lenth = 19;

$str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";

echo strlen($str)<=$lenth ? $str : (substr($str,0,$lenth).chr(0)."....");

?>

[复制此代码]CODE:

<?

/*

@ 另一种方法,使用ord()函数:

@ 适用于 gb2312 编码:

*/

$str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";

function gb2312_substr($str, $limit) {

$restr ='';

for($i=0;$i< $limit-3;$i++) {

$restr .= ord($str[$i])>127 ? $str[$i].$str[++$i] : $str[$i];

}

return $restr;

}

/*

@ 以下仅适用于 utf-8 编码;

*/

function utf8_substr($str, $limit) {

$restr = '';

for($i=0;$i< $limit-3;$i++) {

$restr .= ord($str[$i])>127 ? $str[$i].$str[++$i].$str[++$i] : $str[$i];

}

return $restr;

}

//解释下上面第一个:chr(0)不是null,null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000虽然chr(0)不会显示出什么,但是他是一个字符。虽然chr(0)不会显示出什么,但是他是一个字符。当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。

?>

  评论这张
 
阅读(91)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018