为了不让表格变形,决定让从数据库中读出来的数据将字符限制在3个字内,用的是substr();函数代码如下,
<td align="center" height="28px"><?php echo substr("$info[mtName]",0,3);?></td>结果是数字和字母就可以,要是汉字的话就是乱码了....达人们帮忙解答...............感激不尽!
<td align="center" height="28px"><?php echo substr("$info[mtName]",0,3);?></td>结果是数字和字母就可以,要是汉字的话就是乱码了....达人们帮忙解答...............感激不尽!
解决方案 »
- 好心人教我学什么程序容易上手又有前途啊?新人。。。。傻
- 网站图片存储问题
- xml_parse 字符编码问题
- 写了个判断一个数组里面是否有重复的内容的函数 大家给点意见 看是否有更高效率的写法 或是我哪里命名不规范==
- 这个正则匹配什么东西?ereg("([%][2][0])",$url))
- 又有难题了,唉
- 我是刚转做PHP的
- [代码]session对象保存控制器,第一次拿出代码给大家批.
- 有谁能解释一下Apahe下httpd.con中的这个参数是什么作用!
- 大家好!我是新来的,请多关照!请问PHP3,Oracle7.3,如何进行高效的分页处理?谢谢大家!
- 总是提示错误,谁有办法解决的吗
- <xsl:for-each select="catalog/cd"> 就是读不到数据,什么原因呢?
是gbk的话<?php echo substr("$info[mtName]",0,6);?>
是utf-8的话<?php echo substr("$info[mtName]",0,9);?>当然这是纯中文的写法,如果中英想混的话,你要除去英文的部分,再截取中文。
gbk: echo substr($a,0,4);
utf-8: echo substr("$a",0,5);反正凑齐三个字就可以了。
function cut_str($sourcestr,$cutlength){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n<$cutlength) and ($i<=$str_length))
{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if ($ascnum>=224) //如果ASCII位高于224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}
elseif ($ascnum>=192) //如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}
elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}
else //其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数计1个
$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
}
return $returnstr;
}?>