在Firefox中通过PHP或CSS截断带省略号的长字符串

在Firefox中通过PHP或CSS截断带省略号的长字符串,php,html,css,firefox,Php,Html,Css,Firefox,可能重复: 我也有同样的问题。这篇帖子发布已经快两年了,Firefox仍然忽略了文本溢出:省略号属性 我当前的解决方案是在PHP中截断长字符串,如下所示: if(strlen($some_string) > 30) $some_string = substr($some_string,0,30)."..."; 这或多或少是可行的,但它看起来不像文本溢出:省略号那样好或准确在支持它的浏览器中。三十个字符的实际宽度各不相同,因为我没有使用单空格字体。另一个线程中发布的XML修复和j

可能重复:

我也有同样的问题。这篇帖子发布已经快两年了,Firefox仍然忽略了
文本溢出:省略号属性

我当前的解决方案是在PHP中截断长字符串,如下所示:

if(strlen($some_string) > 30)
    $some_string = substr($some_string,0,30)."...";
这或多或少是可行的,但它看起来不像
文本溢出:省略号那样好或准确在支持它的浏览器中。三十个字符的实际宽度各不相同,因为我没有使用单空格字体。另一个线程中发布的XML修复和jQuery插件似乎也不再适用于Firefox

目前是否有一种独立于浏览器的CSS实现这一点的方法?如果没有,是否有一种方法可以测量PHP中给定字体和字体大小的字符串的宽度,以便我可以更准确地放置省略号?

可能有助于将输出截断为最接近的单词,然后只需添加一个
&hellip(…)HTML实体编码到输出的末尾,以获得最终输出


正如您所注意到的,CSS解决方案还没有足够广泛的浏览器支持,您仍然需要担心旧浏览器

遗憾的是,所有浏览器都不能处理相同的CSS功能。但是,您可以使用JavaScript(在jQuery的帮助下)执行类似的操作

下面是一个这样一个东西的外观示例:

基本思想是将字符串转换为单词数组,如下所示:

var words = full.split(/\s+/g);
循环遍历它们并获取第一个N(在本例中,我选择了24),然后将它们放入另一个数组:

for (var i = 0; i < 24; i++) {
    short.push(words[i]);
}

可能的DUPE:我在一些代码中做了这件事,但是我发现如果你在UL中的一个Li中自动插入这个,例如在ReXTrice编辑器的输出上,它只会隐藏所讨论的Li项的结尾,而不是LI项的结尾以及文本的其余部分。所以,请注意,在这种情况下它无法工作。
$('.snip').html(short.join(" ") + ' <span class="expand">...</span>');
$('.expand').click(function() {
    $('.snip').html(full);
});