5

我是 PHP 新手。

我正在使用带有 ACF(高级自定义字段)的 Wordpress,因此我从字段中获取的任何数据都使用以下代码:

echo $fieldname;

这些字段之一是有关某事的信息,我想做的是限制检索到的字符数量,以便仅显示 150 个字符。

任何人都知道如何做到这一点?

4

3 回答 3

3

你可以用substr做到这一点:

$str = "Aliquam odio eros, consectetur eu euismod faucibus, venenatis lobortis nulla. Pellentesque libero massa, bibendum in tempus ut, pretium et ante. In bibendum volutpat porta. ";

echo substr($str, 0, 150);

但是如果你有一个很长的字符串,那么你可能想在一个单词之后剪掉它。您可以为此使用以下功能(当它太长时它将切断 str 并将其...放在后面):

function truncate_string($str, $length) {
    if (!(strlen($str) <= $length)) {
        $str = substr($str, 0, strpos($str, ' ', $length)) . '...';
    }

    return $str;
}

客户端

您也可以在客户端执行此操作。我不知道你想达到什么目的,但如果它是一个标题或其他东西,并且你不希望它太长并破坏你的布局,那么你可以使用 CSS3 text-overflowjsFiddle 示例

于 2012-09-14T11:18:24.470 回答
0

如果您关心剪切以便不想剪切单词内的句子,则可以使用此功能:

function safeShrinkText($text, $length = 100, $suffix = '...')
{
    $text = strip_tags($text);
    if ($length > strlen($text)) {
        return $text;
    }

    while (!isset($text[$length]) || $text[$length] != ' ' && $length != 0) {
        $length--;
    }

    return mb_substr($text, 0, $length) . $suffix;
}

这个函数不会剪切单词里面的句子。

于 2012-09-14T11:22:15.020 回答
0

您可以在 PHP中使用substr

$fieldname = substr($fieldname, 0, 150); 

要不就

echo substr($fieldname, 0, 150);

或者,限制您的数据库查询返回的字符数,例如MySQL和 MS SQL 都具有LEFT(..)限制返回数据的功能。

IE

SELECT LEFT(FieldName, 150) AS FieldName FROM MyTable WHERE ...
于 2012-09-14T11:17:14.397 回答