天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 21184|回复: 0
打印 上一主题 下一主题

[总结] php chr() ord() 获取ASCII编码 中文截取

[复制链接]
跳转到指定楼层
1#
s.Bo 发表于 2009-9-19 17:11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ASCII编码是计算机所能显示字符的编码,它的取值范围是0-255,其中包括标点、字母、数字、汉字等。在编程过程中,经常把指定的字符转化为ASCII码进行比较。
下面是PHP提供的转换ASCII码和字符的函数。
1.chr()函数
该函数用于将ASCII码值转化为字符串。其函数声明如下:
string chr (int ascii);
2.ord()函数
该函数用于将字符串转化为ASCII码值。其函数声明如下:
int ord(string str);
示例:
使用chr()函数和ord()函数进行字符串与ASCII码之间的转换,程序代码如下:
<?php
$str1=chr(88);
echo $str1;               //返回值为X
echo "\t";
$str2=ord('S');
echo $str2;               //返回值为83
?>

中文字符截取

ord() chr() int() intval() 的区别
ord()->本函数返回字符的 ASCII (美国国家标准交换码) 序数值。本函数和 chr() 函数相反

php 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)不会显示出什么,但是他是一个字符。当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。
?>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛  |京ICP备2025130156号|

GMT+8, 2025-6-21 23:17 , Processed in 0.093881 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表