Как ограничить отображение контента из базы данных? - PullRequest
1 голос
/ 30 января 2010

Я использую следующий код для отображения заголовка и основного содержания статей из базы данных. Как сделать так, чтобы только первые 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 />";
    }

?>

Любая помощь очень ценится!

Ответы [ 4 ]

1 голос
/ 30 января 2010

substr($body, 0, 200)

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

1 голос
/ 30 января 2010

Вы можете сделать это в PHP, как уже упоминали другие, или непосредственно в вашем запросе (если вам не нужны все данные на вашей странице):

$select = mysql_query("SELECT id, title, SUBSTR(body, 0, 200) FROM articles ORDER BY id DESC"
1 голос
/ 30 января 2010

Изменить эту строку:

echo $body . "<br />";

К этому:

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

При этом используется оператор сравнения (он же троичный оператор) для вывода только первых 200 символов, если длина $body превышает 200 символов, и всего тела в противном случае.

Обычная техника, которую можно использовать для пометки усеченного блока текста, заключается в добавлении многоточия на конце усеченного текстового блока (три периода или HTML-сущность &hellip;). Вот почему я обычно использую здесь оператор сравнения, а не просто substr($str,0,200), который будет работать в обоих случаях, но не позволит вам изменять их отдельно.

0 голосов
/ 05 июня 2013

Я создал функцию под названием лимит. Может быть, это будет полезно и вам.

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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...