我试图截断通过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个字符。
发布于 2012-03-10 01:51:43
请注意,您正在测试$text的长度或$moretext的长度,如果这两个中的任何一个的长度大于210,则会将省略号附加到。假设这不是您想要的行为,那么您需要将其分成两个if语句。
发布于 2012-03-10 01:58:03
使用以下命令:
$text = $row['text'];
$moretext = $row['moretext'];
$text = strlen($text) <= 210 ? $text : substr($text, 0, 210) . "...";
$moretext = strlen($moretext) <= 210 ? $moretext : substr($moretext, 0, 210) . "...";发布于 2012-03-10 01:58:35
也许你应该让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时,该字段已经为您设置好了。
试一试吧!
https://stackoverflow.com/questions/9638583
复制相似问题