繁体   English   中英

以像素为单位截断给定宽度的php字符串

[英]Truncating A php String for given Width in Pixels

我想通过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个字母放在一个id为d 然后在JavaScript中,我得到它的宽度并检查while循环。 我运行while循环(继续递减$len ),直到子串的像素长度在所需的宽度内,并保持在具有相同id的span中重新划分该子串。 然后我打印那个子串。

有人可以更改代码以使其工作或建议更好的方法吗? 我是新手,所以请尽量简单。

据我所知,你的问题是,当字符串长于给定的容器时,你试图隐藏溢出?

我宁愿建议使用overflow:hidden; 空白:NOWRAP; 也许是一些文本溢出:省略号; 在容器结束之前制作“...”效果。 但是你必须记住,大多数浏览器和操作系统的字体呈现方式不同,因此Windows上的用户体验可能与Mac上的不同。

那可能行不通。 JS和PHP不能像这样混合。 while循环没用。

我想到的一个解决方案是你可以先通过ajax获取PHP字符串,然后使用JS根据宽度显示它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM