我想从数据库中获取一些字段值并在html上显示它们。
但是其中一些比div宽度要长,所以我想要切断它们并且如果它们比30个字符更长,则在它们之后添加3个点。
windows vs mac os x-> windows vs m...
threads about windows vista -> threads about win...
我该怎么做?
答案 0 :(得分:6)
如果您需要多次执行此类功能,请考虑以下功能:
function truncate($string, $limit, $break = '.', $pad = '...')
{
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit) return $string;
// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit)))
{
if($breakpoint < strlen($string) - 1)
{
$string = substr($string, 0, $breakpoint) . $pad;
}
}
return $string;
}
用法:
echo truncate($string, 30);
答案 1 :(得分:1)
根据你的例子,你似乎并不关心保留单词,所以这里是:
if (strlen($str) > 30)
{
echo substr($str, 0, 30) . '...';
}
答案 2 :(得分:0)
如果您使用Smarty,则可以使用truncate修饰符。
{myLongText|truncate:30:'...':true}
BTW,这种功能应该存在于任何体面的模板引擎中。
答案 3 :(得分:-2)
查看wordwrap(),这应该是您正在寻找的内容。