10

我正在尝试显示excerpts来自博客文章的内容。我可以用phpand做到这一点mysql。但是,我想知道在 Laravel 框架中是否有更“友好”的方式来做到这一点。

谢谢!

4

5 回答 5

17

您可以使用方法来做到这一点words

默认为:

 words($value,$words = 100, $end='...');

你可以像这样实现它

Str::words($post->body);

Str::words($post->body,10); //will show first 10 words

如果出现任何错误,例如 Str 类未找到,请使用以下语句

use Illuminate\Support\Str;
于 2014-05-08T08:35:20.850 回答
12

对不起,我很晚了,但希望它会帮助某人:

像这样使用它可能会抛出“Class 'Str' not found error”:

Str::words($post->body,10);

与完整的命名空间一起使用,如下所示:

\Illuminate\Support\Str::words($post->body, 10);

或带点:

\Illuminate\Support\Str::words($post->body, 10,'...');

或者在config/app.php中将函数注册为 Facade ,尝试像这样添加它:

'aliases' => [
...
        'Str' => Illuminate\Support\Str::class,
...
]

然后在任何地方使用Str::!,因此你可以自由使用: Str::words($post->body,10);

需要简洁的解决方案,只需使用 Laravel 的str_limit()辅助函数:

str_limit($post->body, 10);

或者

str_limit($post->body, 10,'...');
于 2018-04-27T16:21:01.823 回答
0

您可以str_limit轻松使用。

在 PHP 文件中:

str_limit($value, $limit = 100, $end = '...')

Blade 模板文件中:

{{ str_limit($value, $limit = 100, $end = '...') }}

我看到这在4.25.6版本中可用

参考

于 2018-02-20T09:48:58.050 回答
0

上面的一些答案提到了 Str 类,该类已从 laravel 核心中删除并移至新的 helpers 包。如 Laravel v6.x 升级指南中所述。 https://laravel.com/docs/6.x/upgrade#helpers

“所有str_array_助手都已移至新的laravel/helpersComposer 包并从框架中删除。如果需要,您可以更新对这些助手的所有调用以使用Illuminate\Support\StrIlluminate\Support\Arr类。或者,您可以将新的 laravel/helpers 包添加到您的应用程序中继续使用这些助手:"

composer require laravel/helpers

只需通过 Composer 安装它,它应该可以正常工作。

于 2020-06-01T11:31:30.510 回答
0

您可以使用\Illuminate\Support\Strclass with Str::limit($string, $limit, $end),例如:

use \Illuminate\Support\Str;
/*...*/
Str::limit($myString, 50, '>>>');
于 2021-01-08T11:58:29.827 回答