Php 如何截断从MySQL数据库获取的文本并附加省略号?
我试图截断通过Php 如何截断从MySQL数据库获取的文本并附加省略号?,php,mysql,Php,Mysql,我试图截断通过mysql\u fetch\u array获取的文本,但由于某些原因,strlen无法正确计算。我的代码如下: while($row = mysql_fetch_array($result)) { $text = $row['text']; $moretext = $row['moretext']; if (strlen($text) > 210 || strlen($moretext) > 210) {
mysql\u fetch\u 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个字符。注意,您正在测试$text的长度或$moretext的长度,如果其中一个长度大于210,省略号将被附加到两个。假设这不是期望的行为,您需要将其分为两个if语句。注意,您正在测试$text的长度或$moretext的长度,如果其中任何一个长度大于210,省略号将被附加到两者中。假设这不是所需的行为,您需要将其分为两个if语句。使用以下命令:
$text = $row['text'];
$moretext = $row['moretext'];
$text = strlen($text) <= 210 ? $text : substr($text, 0, 210) . "...";
$moretext = strlen($moretext) <= 210 ? $moretext : substr($moretext, 0, 210) . "...";
$text=$row['text'];
$moretext=$row['moretext'];
$text=strlen($text)使用以下命令:
$text = $row['text'];
$moretext = $row['moretext'];
$text = strlen($text) <= 210 ? $text : substr($text, 0, 210) . "...";
$moretext = strlen($moretext) <= 210 ? $moretext : substr($moretext, 0, 210) . "...";
$text=$row['text'];
$moretext=$row['moretext'];
$text=strlen($text)也许您应该让MySQL为您执行截断
你可以用
或
这样,当您执行mysql\u fetch\u array
时,该字段已经为您设置好了
试试看 也许你应该让MySQL为你做截断
你可以用
或
这样,当您执行mysql\u fetch\u array
时,该字段已经为您设置好了
试试看 你得到了什么结果,使你相信斯特伦无法正确计算?另外,mysql表的“text”和“moretext”列的格式是什么?@GabrielRoth它只是纯UTF8文本。我不确定strlen的计算是否正确,因为它添加了省略号,即使文本低于指定的数量。最大的问题是,如果只有20个字符,但文本包含问号,它会自动添加省略号。您见过php的多字节strlen函数吗?您得到了什么结果,使您相信strlen无法正确计算?另外,mysql表的“text”和“moretext”列的格式是什么?@GabrielRoth它只是纯UTF8文本。我不确定strlen的计算是否正确,因为它添加了省略号,即使文本低于指定的数量。最大的问题是,如果只有20个字符,但文本包含问号,它会自动添加省略号。您见过php的多字节strlen函数吗?
select
IF(LENGTH(moretext) > 210,CONCAT(SUBSTR(moretext,1,210),'...'),moretext) moretext
from mip where active = 1;