缩短字符串NOT基于字符数

时间:2014-03-07 05:00:20

标签: php string

我正在使用steam的openID作为我的php网站的一部分,这意味着一些用户名可能会很长。

当我显示它们时,我想缩短它们以使它们适合某个空间。

我目前的解决方案是:

$string = (strlen($alias) > 20) ? trim(substr($alias,0,20), ' ') . '...' : $alias;

所以我基本上取用户名的前20个字符并在最后添加“...”。

这没关系,但游戏玩家会制作奇怪的用户名,并且“iiiiiiiiiiiiiiiiiiii”和“wwwwwwwwwwwwwwwwww”之间实际显示像素的差异在大多数字体中都相当大。 (W会要求我将其限制为13个字符,而我允许最多41个,20个有点作品,但有些名称比其他名称缩短了很多)

我可以选择间距相等的字体,但它们通常看起来不太好看。

我有什么选择?

2 个答案:

答案 0 :(得分:3)

我认为最好使用css text-overflow: ellipsis代替:

  overflow: hidden;
  text-overflow: ellipsis;

http://jsfiddle.net/j582h/

http://www.w3schools.com/cssref/css3_pr_text-overflow.asp

答案 1 :(得分:0)

你可以通过使用css试试这个来实现这个

HTML:

<div id="div_wrap">
wwwwwwwwwwwwwwwwwwww
</div>

<div id="div_wrap">
iiiiiiiiiiiiiiiiiiii
</div>

CSS:

#div_wrap{
  width: 50px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

参见 DEMO