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

时间:2012-03-09 17:42:49

标签: php mysql

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

 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个字符。

3 个答案:

答案 0 :(得分:1)

注意到您正在测试$ text的长度或$ moretext的长度,如果 的长度大于210,则省略号将附加到两个即可。假设这不是期望的行为,您需要将其分成两个if语句。

答案 1 :(得分:0)

使用此:

$text = $row['text'];
$moretext = $row['moretext'];

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

答案 2 :(得分:0)

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

您可以使用MySQL's IF function

select
    IF(LENGTH(moretext) > 210,CONCAT(LEFT(moretext,210),'...'),moretext) moretext
from mip where active = 1;

select
    IF(LENGTH(moretext) > 210,CONCAT(SUBSTR(moretext,1,210),'...'),moretext) moretext
from mip where active = 1;

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

试一试!!!