如何查找字符串的物理长度?

3
在我的网站上,用户的用户名总是显示在每个页面的顶部(连同站点标题、其他页面链接等),字体大小为“3”。
我花了很长时间才弄清楚,但最终我注意到,用户名太长的用户会干扰每个页面顶部的间距,所有文本都会被推到下一行,使整个页面看起来非常丑陋(只有单个用户能看到,但我不希望任何用户看到它)。 我不是在问如何找到他们名字的字符数 - 我想知道的是如何确定他们的名字所占据的物理空间量,并在需要时将字体大小减小到2,甚至1。
一个简单的strlen()不起作用的原因是潜在的空间差异(“Tragic Dionysus”占用的空间比“HERSHEYFEVER”少,尽管前者包含更多的字符)。
广泛的谷歌搜索不断给我带来更多的字符计数方法,所以我毫无头绪。

4
你无法知道客户端拥有哪些字体。请使用CSS和Javascript。 - SLaks
3个回答

4

这个问题不能用PHP解决 - 因为很多都取决于前端的样式(字体家族、字体大小、字体风格等)。您可以使用jQuery来确定元素的长度,并在需要时应用某些功能:

HTML

<span id="box"><?=$yourString?></span> 

jQuery

$(function() {
   var box = $('#box');
   if (box.width() >= 50) {
      box.addClass('massiveLength');
   }
});

或者,如果您想将某些内容应用于所有元素,则可以参考这个 jsFiddle 示例


1

在服务器上做到这一点是根本不可能的。

相反,使用Javascript获取元素的实际宽度,然后减小其字体大小。


0
我只是想提出一个建议,如果你将用户名块包裹在一个元素中并给它一个最大宽度,可能会解决你的问题。
<span style="max-width: 50px; overflow: hidden;">The Username Goes Here</span>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接