PHP循环中如何限制字符串字段输出字符数并添加省略号
PHP实现描述字段长度限制并添加省略号
原代码
原代码用于循环输出$items数组中每个元素的标题和描述:
<?php foreach ($items as $item) { ?> <div class="title"><?= $item->title ?></div> <div class="description"><?= $item->description?></div> <?php } ?>
需求
将description字段限制为最多显示230个字符,超出部分末尾添加省略号“...”,最终输出效果如下:
<div class="title">What is Lorem Ipsum?</div> <div class="description">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type...</div>
解决方案
利用PHP多字节字符串处理函数实现,兼容中文等非ASCII字符,提供两种写法:
写法一:分步处理(可读性更高)
<?php foreach ($items as $item) { ?> <div class="title"><?= $item->title ?></div> <div class="description"> <?php $description = $item->description; $maxDisplayLength = 230; // 计算多字节安全的字符串长度 if (mb_strlen($description) > $maxDisplayLength) { // 截断字符串并添加省略号 echo mb_substr($description, 0, $maxDisplayLength) . '...'; } else { // 长度未超限,直接输出原内容 echo $description; } ?> </div> <?php } ?>
写法二:三元表达式(更简洁)
<?php foreach ($items as $item) { ?> <div class="title"><?= $item->title ?></div> <div class="description"> <?= mb_strlen($item->description) > 230 ? mb_substr($item->description, 0, 230) . '...' : $item->description ?> </div> <?php } ?>
关键说明
- 优先用
mb_strlen()和mb_substr():这两个函数支持多字节字符(如中文、日文)的长度计算与截断,避免因字符编码导致的统计错误或乱码 - 省略号按需添加:仅当内容长度超过230字符时才追加,避免短内容末尾出现多余符号
内容的提问来源于stack exchange,提问作者Hector
相关产品推荐
相关产品推荐

