我正在尝试截断通过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个字符。
答案 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
时,该字段已经为您设置。
试一试!!!