PHP / MySQL限制从字段输出的字符

时间:2013-12-25 04:27:45

标签: php mysql

当我得到一个数据库数组时,有时我的结果列表页面会有太多数据的字段,这只是给出一个简短的描述。如何将字符数限制为100。

这是我的循环数组:

<?php
    $i = 1;
    while ($row = mysql_fetch_array($result)) {
?>

这是我的回音陈述:

<?php echo $row['description']; ?>

5 个答案:

答案 0 :(得分:3)

您可以像这样使用substr

<?php echo substr($row['description'], 0, 100); ?>

但根据您的应用程序需求,使用SUBSTR进行初始MySQL查询时可能会更好,但行为方式相同,但在MySQL中。

SELECT SUBSTR(example_field, 1, 100)
FROM example_table
WHERE example_field IS NOT NULL
LIMIT 1
;

MySQL脚本基本上意味着从第一个(example_field)字符开始返回1的子字符串,并返回100个字符。

在某些情况下这可能会更好,因为如果您将文本长度限制为100个字符,为什么要抓取可能包含1,000多个字符的字段的数据?在很多情况下,这肯定会让你的PHP脚本陷入困境。如果您的应用只需要返回100个字符,那么在MySQL中处理它是最好的方法。

答案 1 :(得分:2)

您可以尝试使用substr()

<?php echo substr($row['description'],0,100); ?>

OR

function truncate($input, $maxWords, $maxChars)
{
    $words = preg_split('/\s+/', $input);
    $words = array_slice($words, 0, $maxWords);
    $words = array_reverse($words);

    $chars = 0;
    $truncated = array();

    while(count($words) > 0)
    {
        $fragment = trim(array_pop($words));
        $chars += strlen($fragment);

        if($chars > $maxChars) break;

        $truncated[] = $fragment;
    }

    $result = implode($truncated, ' ');

    return $result . ($input == $result ? '' : '...');
}

//尝试用cuctom函数truncate(),它有助于用文字剪切描述。

 <?php echo truncate($row['description'],5,200); ?>

答案 2 :(得分:1)

与其他答案一样,您应该使用substr,但您可以将其与strpos结合使用,这样当您缩短字符串时,您会在完整的单词后停止而不是中断单词本身

$pos = strpos($row['description'], ' ', 100);
echo substr($row['description'], $pos);

答案 3 :(得分:0)

我会在SQL查询中执行此操作。最好限制返回的结果,这样可以通过不从您不打算使用的数据库返回数据来减少I / O和网络吞吐量。在您的SQL查询中执行:

SELECT LEFT(description, 100) AS description
      ,....
FROM ...

答案 4 :(得分:0)

以防万一有人对另一个关于如何用点限制字符输出的代码片段感兴趣,我使用这个,它对我来说效果很好

CONCAT(SUBSTR(<column_name_here>, 1, 100),'...... Read More') AS Column_Name