我想通过PHP截断从MySQL数据库中获取的给定字符串以适合给定的像素。我发现的大多数解决方案都基于字符数。但我根据像素长度特别想要它。(我不想使用等宽字体)
我发现$('#idName').width()
可以在JavaScript中用于拟合。这对于用HTML编写的字符串很简单。但这是交易。我的字符串是一个存储在PHP中的变量,我需要JavaScript来获取像素的宽度,我需要在具有特定id名称的span(HTML)中包含该字符串。
所以,我试图使用PHP,HTML和JavaScript中的所有三个来使它工作。以下是我的代码。
<?php
$len=100;
?>
<span id='d' style="display:none;"><?php echo substr($details,0,$len) ?></span>
<script>
var len=370;
while($('#d').width()>len){
<?php
$len=$len-1;
echo "<span id='d' style='display:none;'>" . substr($details,0,$len) . "</span>";
?>
}
<?php echo substr($details,0,$len); ?>
</script>
所以我把我的字符串前100个字母放在一个标识为d
的范围内。然后在JavaScript中,我得到它的宽度并检查while循环。我运行while循环(保持递减$len
)直到子串的像素长度在所需的宽度内,并保持在具有相同id的span中重新划分该子串。然后我打印那个子串。
有人可以更改代码以使其工作或建议更好的方法吗?我是新手,所以请尽可能简单。
答案 0 :(得分:2)
据我所知,你的问题是,当字符串长于给定的容器时,你试图隐藏溢出?
我宁愿建议使用overflow:hidden;空白:NOWRAP;也许是一些文本溢出:省略号;在容器结束之前制作“...”效果。但你必须记住,大多数浏览器和操作系统的字体呈现方式不同,因此Windows上的用户体验可能与Mac上的不同。
答案 1 :(得分:0)
那可能行不通。 JS和PHP不能像这样混合。 while循环没用。
我想到的一个解决方案是你可以先通过ajax获取PHP字符串,然后使用JS根据宽度显示它。