2010-01-30 3 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

+0

Я такой идиот, ваше решение действительно работает. У меня открылись две страницы, и я редактировал неправильный. lol Большое спасибо. – Daemon

+0

Np, рад, что сработало. – zombat

1

substr($body, 0, 200)

Остерегайтесь, если вы храните разметку в базе данных, так как это может измельчить тег пополам.

+0

Это тоже работает, спасибо. – Daemon

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... 
Смежные вопросы