当前位置: 首页 > 图文教程 > 网络编程 > PHP > php chr() ord()中文截取乱码问题解决方法

PHP
如何防止入侵:My SQL各种攻击方法大全
教你使用MySQL:MySQL常用命令一览
教你如何在linux下建立mysql镜像数据库
实际应用:MySQL5存储过程编写实践
MySQL手册版本 5.0.20-MySQL同步
MySQL手册版本 5.0.20-MySQL同步(二)
MySQL手册版本 5.0.20-MySQL同步(三)
MySQL 版本 卸载与安装
[Mysql]Mysql中mysqldump命令使用详解 (1)
[Mysql]Mysql中mysqldump命令使用详解 (2)
通过缓存数据库结果提高PHP性能(1)
通过缓存数据库结果提高PHP性能(2)
通过缓存数据库结果提高PHP性能(3)
通过缓存数据库结果提高PHP性能(4)
如何使用SQL Server 2005 INSTEAD-OF触发器
实例讲解MySQL数据库的查询优化技术 (1)(2)
实例讲解MySQL数据库的查询优化技术 (1)
高手心得:提高MySQL性能的方法 (1)(2)
高手心得:提高MySQL性能的方法 (1)
工作笔记:配置MySQL为高可用集群 (1)(2)

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


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

今天看到chr() ord()中文截取乱码问题这个例子,觉得相当的不错,拿出来和大家分享下,有兴趣的朋友可以去试下,看看怎么样.
复制代码 代码如下:

<?php
$lenth = 19;
$str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";
echo strlen($str)<=$lenth ? $str : (substr($str,0,$lenth).chr(0)."....");
?>

复制代码 代码如下:

<?
/*
@ 另一种方法,使用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)不会显示出什么,但是他是一个字符。当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。
?>