对于一般情况,这样就行了function csubstr($str,$len)
{
$engword = 0;
for($i=0;$i<$len;$i++){
$c = substr($str,$i,1);
if(ord($c)<127) $engword++;
}
if($engword%2==1){ //英文数为奇数
if($len%2==1) $str = substr($str,0,$len);
else $str = substr($str,0,$len-1);
}
else{//英文数为双数
if($len%2==1) $str = substr($str,0,$len-1);
else $str = substr($str,0,$len);
}
return $str;
}有的人在ord($c)<127
用
ord($c)<0xa0
不过我用前者不曾出现任何错误,所以.....
{
$engword = 0;
for($i=0;$i<$len;$i++){
$c = substr($str,$i,1);
if(ord($c)<127) $engword++;
}
if($engword%2==1){ //英文数为奇数
if($len%2==1) $str = substr($str,0,$len);
else $str = substr($str,0,$len-1);
}
else{//英文数为双数
if($len%2==1) $str = substr($str,0,$len-1);
else $str = substr($str,0,$len);
}
return $str;
}有的人在ord($c)<127
用
ord($c)<0xa0
不过我用前者不曾出现任何错误,所以.....
解决方案 »
- .htaccess文件怎么写?
- 在访问地址栏中查询数据
- 数据库导出导入的问题,实在没办法了,帮忙
- DOM里的$items->item($i)->nodeValue除了nodeValue还能换什么东西啊?
- global array数组,无法传进函数里?
- 哪有NET版式网上考试系统下载
- 也是,看了半天文档测试,英文的调试老是不行,希望高手给个具体例子,不甚感谢,学习中!!!
- 请问sendmail可以安装在windows上吗?
- php中curl函数调用本地localhost接口,调用失败
- ajax请求php返回数据出错
- 100分求救!在线等候,急死了!
- PHP4.3.1+Apache2.0.44+win不能正常解析php文件的问题……
CSDN 上有很多这方面的旧贴!
一般的这种文字截取是为了做提示性的内容,所以最后一个字符是否有效并不重要。
加上chr(0)的原因是若最后一个字符若是被截断的全角字,则用其补空。不是加上也没有影响。如需想确切的知道,可用ddboy(呀) 的方法。有意义的截取应截取到段末或句尾。
参照ddboy(呀)的方法