当前位置: 首页 > 图文教程 > 网络编程 > PHP > php中文字符截取防乱码

PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
用mysql内存表来代替php session的类
简化php模板页面中分页代码的解析
一周让你学会PHP 不错的学习资料
PHP 数据库树的遍历方法
php实现从ftp服务器上下载文件树到本地电脑的程序
PHP 操作文件的一些FAQ总结
PHP 截取字符串 分别适合GB2312和UTF8编码情况
PHP 编程的 5个良好习惯
php下几个常用的去空、分组、调试数组函数
PHP Ajax中文乱码问题解决方法
php 采集书并合成txt格式的实现代码
php Try Catch异常测试
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Zend 输出产生XML解析错误
php动态生成JavaScript代码
隐性调用php程序的方法
在JavaScript中调用php程序
php 数组的创建、调用和更新实现代码
php生成SessionID和图片校验码的思路和实现代码

PHP 中的 php中文字符截取防乱码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 275 ::
收藏到网摘: n/a

当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了 先看段代码
复制代码 代码如下:

<?php
$len = 15;
$str = "这个新闻或是文章的标题很长,需要只显示前面一些字,后面用...来代替";
echo strlen($str)<=$len ? $str : (substr($str,0,$len).chr(0)."...");
?>

chr(0)相关知识:
null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。

淡水ps:
如果是UTF-8,UTF-8中的汉字是3个字节的,截取的长度尽量去3的倍数,以避免乱码的产生