2010-01-30 56 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...