- 论坛徽章:
- 1
|
原帖由 115300111 于 2006-6-6 16:12 发表
- function utf8_trim($str) {
- $len = strlen($str);
- for($i=strlen($str)-1;$i>=0;$i-=1){
- $hex .= ' '.ord($str[$i]);
- $ch = ord($str[$i]);
- if(($ch & 128 ...
复制代码
- function utf8_trim($str) {
- $len = strlen($str);
- for($i=strlen($str)-1;$i>=0;$i-=1){
- $hex .= ' '.ord($str[$i]);
- $ch = ord($str[$i]);
- if(($ch & 128)==0) return substr($str,0,$i);
- if(($ch & 192)==192)return substr($str,0,$i);
- }
- return($str.$hex);
- }
复制代码
第一:代码有一些不规范,$hex没有做过初始化,而且$hex从变量名称来说,应该是16进制数,而这里是字符串了。
第二:($ch & 128 ) ==0,这个表示如果为普通英文符号(0~127)
第三:($ch & 192)==192,这个192的16进制为0xc0,这个在工业协议之中很常见,Unicode编码也很常见,QQ的协议据说用了,是表示一段通讯内容的结束标志
第四:从上可知:如果检测到一个普通英文字符,则返回截取的字符串
如果检测到通讯内容结束字符串,也返回截取的字符串
否则的话,应该算是补全了到两位,因为是空格和当前字符的ascii。
具体作用不好说,没有看到上下文应用场合。
[ 本帖最后由 HonestQiao 于 2006-6-6 22:24 编辑 ] |
|