php chr() ord()中文截取乱码问题解决方法
作者:bea
代码如下: <?php $lenth = 19; $str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?"; echo strlen($str)<=$lenth ? $str : (substr($str,0,$lenth).chr(0)."...."); ?> 代码如下: <? /* @ 另一种方法,使用ord()函数: @ 适用于 gb2312 编码: */ $str = "怎么将新闻的很长的标
代码如下:
<?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)不会显示出什么,但是他是一个字符。当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。
?>
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- php 301转向实现代码
- PHP Squid中可缓存的动态网页设计
- PHP cron中的批处理
- FleaPHP的安全设置方法
- php项目打包方法
- 用PHP调用Oracle存储过程的方法
- php5新改动之短标记启用方法
- php5 pdo新改动加载注意事项
- PHP常用函数小技巧
- PHP下10件你也许并不了解的事情
- PHPMailer邮件类利用smtp.163.com发送邮件方法
- fleaphp下不确定的多条件查询的巧妙解决方法
- Zend Guard一些常见问题解答
- php目录管理函数小结
- php获取某个目录大小的代码
- php递归列出所有文件和目录的代码
- 在服务端进行目录建立、删除,文件上传、删除的过程的php代码
- php面向对象的方法重载两种版本比较
- php+AJAX传送中文会导致乱码的问题的解决方法