首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何截断从MySQL数据库获取的文本并附加省略号?

问如何截断从MySQL数据库获取的文本并附加省略号?
EN

Stack Overflow用户
提问于 2012-03-10 01:42:49
回答 3查看 443关注 0票数 1

我试图截断通过mysql_fetch_array获得的文本,但由于某些原因,strlen无法正确计算。我的代码如下:

代码语言:javascript
复制
 while($row = mysql_fetch_array($result)) {
        $text = $row['text'];
        $moretext = $row['moretext'];
            if (strlen($text) > 210 || strlen($moretext) > 210) {
               $text = substr($text, 0, 210)."...";
               $moretext = substr($moretext, 0, 210)."...";
             }
    }

我如何让它工作,以便它计算文本的长度,并在超过指定的长度时附加一个省略号,在本例中为210个字符。

EN

回答 3

Stack Overflow用户

发布于 2012-03-10 01:51:43

请注意,您正在测试$text的长度或$moretext的长度,如果这两个中的任何一个的长度大于210,则会将省略号附加到。假设这不是您想要的行为,那么您需要将其分成两个if语句。

票数 1
EN

Stack Overflow用户

发布于 2012-03-10 01:58:03

使用以下命令:

代码语言:javascript
复制
$text = $row['text'];
$moretext = $row['moretext'];

$text = strlen($text) <= 210 ? $text : substr($text, 0, 210) . "...";
$moretext = strlen($moretext) <= 210 ? $moretext : substr($moretext, 0, 210) . "...";
票数 0
EN

Stack Overflow用户

发布于 2012-03-10 01:58:35

也许你应该让MySQL为你做截断

您可以使用MySQL's IF function

代码语言:javascript
复制
select
    IF(LENGTH(moretext) > 210,CONCAT(LEFT(moretext,210),'...'),moretext) moretext
from mip where active = 1;

或

代码语言:javascript
复制
select
    IF(LENGTH(moretext) > 210,CONCAT(SUBSTR(moretext,1,210),'...'),moretext) moretext
from mip where active = 1;

这样,当您执行mysql_fetch_array时,该字段已经为您设置好了。

试一试吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9638583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档