<?php
function trimChinese($str,$len)
{
$r_str='';
$i=0;
while ($i<$len){
$ch=substr($str,$i,1);
if(ord($ch)>0x80) $i++;
$i++;
}
$r_str=substr($str,0,$i);
if (strlen($str) > $len)
$r_str .= "...";
return $r_str;
}
$str = "比如要求长度为个长度长度长度长度";
echo trimChinese($str,30);
?>
function trimChinese($str,$len)
{
$r_str='';
$i=0;
while ($i<$len){
$ch=substr($str,$i,1);
if(ord($ch)>0x80) $i++;
$i++;
}
$r_str=substr($str,0,$i);
if (strlen($str) > $len)
$r_str .= "...";
return $r_str;
}
$str = "比如要求长度为个长度长度长度长度";
echo trimChinese($str,30);
?>
解决方案 »
- php执行vbs脚本
- 求解,如果要写一个论坛系统大概需要哪些东西?
- fopen创建文件,文件名的一些问题.
- 又见js变态的写法,看得我脑子痛
- 请教,在php中,按下一个Form中的submit键,如何中获取另外一个Form中单选框的值?
- 在php中 ,如何才能向asp中使用server.mappath("default.php")得到网站的物理目录?
- 学习php的一个缺点:主机提供比asp的少多了
- linux下解释php文件问题
- 最近公司让我做一个足球彩票的网站,有兴趣的请各抒几建。谢谢
- 如何让数据呈两列显示?
- 如何实现菜单的折叠和伸展?
- 怎么点击一个链接文字(add)后.链接文字变为(ok).然后(OK是普通文本.不是链接文本)
可以贴出来看看吗,上面的函数,在字符不够时,不会补齐,对不齐不太好看。
function trimChinese($str,$len)
{
$r_str='';
$i=0;
while ($i<$len){
$ch=substr($str,$i,1);
if(ord($ch)>0x80) $i++;
$i++;
}
$r_str=substr($str,0,$i);
if (strlen($str) > $len)
$r_str .= "...";
//用'_'来补齐
return str_pad($r_str,$len+3,'_');
}
$str = "比如要求长度长度长a度";
echo trimChinese($str,30);
$str = "aaa";
echo "<br>";
echo trimChinese($str,30);
echo "<br>";
$str = "比如要求长度为个长度长度长度长度长度长";
echo trimChinese($str,30);
echo "<br>";
?>
如果是用空格来补的话,就要以 来替换"_"(可以是用其他少见字符)
$len应该+4才对。
<?php
function trimChinese($str,$len)
{
$r_str='';
$i=0;
while ($i<$len){
$ch=substr($str,$i,1);
if(ord($ch)>0x80) $i++;
$i++;
}
$r_str=substr($str,0,$i);
if (strlen($str) > $len)
$r_str .= "...";
//用'_'来补齐,然后以" "来代替.
return str_replace("_"," ",str_pad($r_str,$len+4,'_'));
}
$str = "比如要求长度长度长a度";
echo trimChinese($str,30);
$str = "比如";
echo "<br>";
echo trimChinese($str,30);
echo "<br>";
$str = "比如要求长aaa度为个长度长度长度长度长度长";
echo trimChinese($str,30);
echo "<br>";
?>
这里面我写了一个,对于中文英文混排是没有问题的,经过了很多测试的