如何将 Laravel Blade 中的第一个字母大写
Posted
技术标签:
【中文标题】如何将 Laravel Blade 中的第一个字母大写【英文标题】:How to capitalize first letter in Laravel Blade 【发布时间】:2015-12-05 23:59:20 【问题描述】:我正在使用具有本地化功能的 laravel (5.1) 刀片模板引擎。
/resources/lang/en/
文件夹中有一个语言文件messages.php
:
return [
'welcome' => 'welcome',
在我的刀片模板中,欢迎消息是使用 trans
方法调用的:
trans('messages.welcome')
在某些情况下,我需要显示相同的消息,但首字母大写(“欢迎”)。我不想在翻译文件中使用重复记录。
我该如何处理?
【问题讨论】:
【参考方案1】:使用 Laravel 助手 Str::title()
Str::title('messages.welcome')
【讨论】:
【参考方案2】:我认为最好的选择是使用 CSS text-transform 属性
在您的 CSS 文件中:
.lowercase
text-transform: lowercase;
.uppercase
text-transform: uppercase;
.capitalize
text-transform: capitalize;
您的刀片 (html) 文件:
<p class="lowercase"> trans('messages.welcome') </p> <!-- This will display welcome -->
<p class="uppercase"> trans('messages.welcome') </p> <!-- This will display WELCOME -->
<p class="capitalize"> trans('messages.welcome') </p><!-- This will display Welcome -->
或者,对我来说最好的选择,使用引导程序
<p class="text-lowercase"> trans('messages.welcome') </p><!-- This will display welcome -->
<p class="text-uppercase"> trans('messages.welcome') </p><!-- This will display WELCOME -->
<p class="text-capitalize"> trans('messages.welcome') </p><!-- This will display Welcome -->
【讨论】:
【参考方案3】:另一种使用 PHP 和刀片将首字母大写的方法。
控制器
return view('stock.uk-lse', ['name' => 'djan']);
查看
<h1> ucfirst($name) </h1>
【讨论】:
【参考方案4】:在 app/Providers/AppServiceProvider 的 boot() 函数中添加一个刀片指令:
public function boot()
Blade::directive('lang_u', function ($s)
return "<?php echo ucfirst(trans($s)); ?>";
);
这样您可以在刀片文件中使用以下内容:
@lang_u('messages.welcome')
哪个输出:欢迎
你是@lang_u('messages.welcome') :)
【讨论】:
小心这个,因为你的输出不会被转义,这会让你容易受到 XSS 的攻击。 @Maantje 谢谢,但仅限于某些特定用例。刀片指令@lang 也不会转义;这样,您可以在语言文件中使用 html。该指令通常用于从静态语言文件中检索文本,因此这并不危险。如果你想显示用户生成的输入,你当然应该转义它。【参考方案5】:使用PHP原生的ucfirst
函数:
ucfirst(trans('messages.welcome'))
【讨论】:
如果您有一个包含多个单词的字符串并且您希望每个单词都大写,则使用ucwords()
。
另外作为旁注,我相信使用什么版本的 laravel 并不重要,因为 .. ucfirst、lcfirst、ucwords 都是标准的 php 辅助函数。 lcfirst 是小写的,并且出现在 php 5.3+ 中,而我相信 ucfirst 和 ucwords 在 php 5.0 中。
遗憾的是,这不是多字节解决方案。您可以像这样使用 mb_convert_case( $x, MB_CASE_TITLE, 'UTF-8') 或 CSS: .my-class:first-letter text-变换:大写; 以上是关于如何将 Laravel Blade 中的第一个字母大写的主要内容,如果未能解决你的问题,请参考以下文章