2010-01-30 55 views
1

我正在使用以下代码来显示数据库中文章的标题和正文内容。我怎样才能让文章的正文中的前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 />"; 
    } 

?> 

任何帮助,非常感谢!

回答

1

改变这一行:

echo $body . "<br />"; 

向该:

echo (strlen($body) > 200) ? substr($body,0,200) : $body; 
echo "<br />"; 

即利用comparison operator(又名三元运算符),以输出仅前200个字符,如果$body的长度超过200个字符,否则全身。

可用于标记截断文本块的常用技术是在截断文本块(三个句点或HTML实体&hellip;)的末尾添加省略号。这就是为什么我通常在这里使用比较运算符,而不是仅仅执行substr($str,0,200),这两种情况都适用,但不能让你单独修改它们。

+0

不幸的是,这并没有改变任何东西,内容的整个长度(超过200个字符)仍然出现。 – Daemon 2010-01-30 06:49:38

+0

我是个笨蛋,你的解决方案确实有效。我打开了两页,我正在编辑错误的一页。大声笑 非常感谢。 – Daemon 2010-01-30 06:54:57

+0

Np,很高兴它的工作。 – zombat 2010-01-30 06:58:27

1

substr($body, 0, 200)

当心,如果你在数据库中存储的标记,因为这可能会在半砍的标签。

+0

这也适用,谢谢。 – Daemon 2010-01-30 06:55:43

1

可以用PHP在查询中做到这一点的其他人所说的,或直接以及(如果你并不需要所有的数据在页面上):

$select = mysql_query("SELECT id, title, SUBSTR(body, 0, 200) FROM articles ORDER BY id DESC" 
0

我创建一个称为限制的函数。也许它也会对你有用。

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...