我使用以下代码显示数据库中文章的标题和正文内容。如何只显示文章正文中的前200个字符而不是所有字符?
<?php
$select = mysql_query("SELECT * FROM articles ORDER BY id DESC");
while ($result = mysql_fetch_assoc($select))
{
$id = $result['id'];
$title = $result['title'];
$body = $result['body'];
echo "<h2><a name='$id'>" . $title . "</a></h2>";
echo $body . "<br />";
}
?>
非常感谢任何帮助!
答案 0 :(得分:1)
更改此行:
echo $body . "<br />";
对此:
echo (strlen($body) > 200) ? substr($body,0,200) : $body;
echo "<br />";
如果$body
长度超过200个字符,那么利用comparison operator(又称三元运算符)仅输出前200个字符,否则输出整个身体。
您可以用来标记截断的文本块的常用技术是在截断的文本块的末尾添加省略号(三个句点,或HTML实体…
)。这就是为什么我通常在这里使用比较运算符而不只是执行substr($str,0,200)
,这对两种情况都有效,但不允许你单独修改它们。
答案 1 :(得分:1)
请注意,如果您将标记存储在数据库中,因为这可能会将标记分成两半。
答案 2 :(得分:1)
您可以像其他人提到的那样在PHP中执行此操作,也可以直接在您的查询中执行此操作(如果您不需要页面上的所有数据):
$select = mysql_query("SELECT id, title, SUBSTR(body, 0, 200) FROM articles ORDER BY id DESC"
答案 3 :(得分:0)
我创建了一个名为limit的函数。也许它对你也有用。
function limit($string, $limit) {
if (strlen($string) < $limit) {
$result = substr($string, 0, $limit);
}
else
$result = substr($string, 0, $limit) . '...';
return $result;
}
echo limit('Testing my function', 5);
//Output
Test...