Laravel 블레이드 템플릿에서 문자열 자르기


92

Smarty와 매우 유사한 Laravel의 블레이드 템플릿에 대한 자르기 수정자가 있습니까?

나는 템플릿에 실제 PHP를 작성할 수 있다는 것을 알고 있지만 작성하기에 조금 더 좋은 것을 찾고 있습니다 (전체 PHP는 템플릿 엔진 논쟁입니다).

예를 들어 다음과 같은 것을 찾고 있습니다.

{{ $myVariable|truncate:"10":"..." }}

작곡가를 통해 Twig와 같은 것을 사용할 수 있다는 것을 알고 있지만 Laravel 자체에 내장 된 기능을 기대하고 있습니다.

그렇지 않다면 Smarty가 제공하는 것과 같은 재사용 가능한 수정자를 직접 만들 수 있습니다. Blade가 모든 구문을 과도하게 사용하지 않는다는 사실이 마음에 들지만 자르기는 정말 편리한 기능이라고 생각합니다.

저는 Laravel 4를 사용하고 있습니다.


laravel 5는 어떻습니까?
Hos Mercury

1
@HosMercury For L5 참조 stackoverflow.com/questions/29281013/…
fl3x7

답변:


198

Laravel 4 & 5 (최대 5.7)에서는 str_limit문자열의 문자 수를 제한 하는를 사용할 수 있습니다 .

Laravel 5.8 이상에서는 Str::limit도우미를 사용할 수 있습니다 .

//For Laravel 4 to Laravel 5.5
{{ str_limit($string, $limit = 150, $end = '...') }}
//For Laravel 5.5 upwards
{{ \Illuminate\Support\Str::limit($string, 150, $end='...') }}

더 많은 Laravel 도우미 함수 http://laravel.com/docs/helpers#strings


사용 사례가 블레이드보기에 있으므로 정답입니다.
Frisbetarian

10
버전 5.8 str도우미가 제거되었으므로 Illuminate\Support\Str::limit($string)대신 사용해야 합니다
Hassan Azimi

1
str_limit는 더 이상 사용되지 않습니다
Omer

39

Laravel 4에는 Str::limit정확한 문자 수로 Str::words잘리고 단어 경계 에서도 잘립니다.

확인 :


Str::wordsLarvel 5.2에 동등한 항목이 있는지 알고 있습니까?
Jiedara

1
아니요. 이제 문자가 아닌 단어 수를 제한하는 것 같습니다. github.com/laravel/framework/blob/5.2/src/Illuminate/Support/…
Dustin Graham

그것이 내가 찾던 것이었다! 고마워 !
Jiedara

32

편집 :이 답변은 Str 클래스가 존재하지 않았을 때 Laravel 4 베타 동안 게시되었습니다. 이제 Laravel 4에서 더 나은 방법이 있습니다-아래 Dustin의 대답입니다. SO 규칙으로 인해이 답변을 삭제할 수 없습니다 (나를 허용하지 않습니다)

블레이드 자체에는 이러한 기능이 없습니다.

Laravel 3에는 Str 클래스가있었습니다.

{{ Str::limit($myVariable, 10) }}

이 단계에서는 Str 클래스가 Laravel 4에 있다고 생각하지 않습니다. 하지만 여기에 자신의 프로젝트에 추가하기 위해 작곡가포함 할 수있는 포트가 있습니다.


제안 해 주셔서 감사합니다. Meido 포트를 이용해야 할 것 같습니다 lol
fl3x7

요즘 Laravel 4에는 Str 클래스가 있습니다. Dustin Graham의 답변을 참조하십시오.
trm42

예-맞습니다. 내가 원래는 Laravel 4 베타 동안에이었다이 답변을 게시 할 때, 때 str을 클래스는 존재하지 않았다
로렌스

원래 대답은 어디에 있습니까? 그것은 :( ... 지금은 4.1에 대한 모든 문서를 찾을 수없는 괴물
Srneczek

15

Laravel 7. * 업데이트 : Fluent Strings 즉, 문자열 값 작업을위한보다 유창하고 객체 지향적 인 인터페이스로, 기존 문자열 작업에 비해 더 읽기 쉬운 구문을 사용하여 여러 문자열 작업을 함께 연결할 수 있습니다.

제한 예 :

$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);

산출

The quick brown fox...

단어 예 :

$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');

산출

Perfectly balanced, as >>>

Laravel 6. * 업데이트 : 모든 laravel 도우미를 작동하려면이 패키지가 필요합니다.composer require laravel/helpers

컨트롤러에서 도우미를 사용하려면 클래스도 포함 / 사용하는 것을 잊지 마십시오.

use Illuminate\Support\Str;

Laravel 5.8 업데이트

이것은 문자열의 문자 를 처리하기위한 것입니다 .

{!! Str::limit('Lorem ipsum dolor', 10, ' ...') !!}

산출

Lorem ipsu ... 

이것은 문자열에서 단어 를 처리하기위한 것입니다 .

{!! Str::words('Lorem ipsum dolor', 2, ' ...') !!}

산출

Lorem ipsum ... 

다음은 문자열 Laravel Helpers 를 처리하기위한 최신 도우미 문서입니다.


1
매우 깨끗한 솔루션. 나를 위해 일했습니다. 베스트 답변 IMO
maximus1127 dec.

@ maximus1127 학습을 향한 노력에 감사드립니다. 도움이 될 수있어서 기쁩니다.
Vipertecpro 2019

1
큰! 내가 더보고 싶은 대답의 종류.
mhrabiee

Lorem ipsum의 dolor와 같은 문자열이 있으면 어떻게 될까요? 올바른 결과를 반환합니까?
Rishi

@Rishi 예, 올바른 결과를 반환합니다. btw 어떤 방법이 제한에 대해 이야기하고 있습니까? 또는 단어?
Vipertecpro

7

다음과 같이 네임 스페이스를 설정할 수 있습니다.

{!! \Illuminate\Support\Str::words($item->description, 10,'....')  !!}

5

코드를 건조하게 유지하고 콘텐츠가 모델에서 제공되는 경우 약간 다른 접근 방식을 채택해야합니다. 다음과 같이 모델을 편집합니다 (L5.8에서 테스트 됨).

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class Comment extends Model
{
    public function getShortDescriptionAttribute()
    {
        return Str::words($this->description, 10, '...');
    }
}
?>

그런 다음 귀하의 관점에서 :

{{ $comment->short_description }}

2

이것은 Laravel 5에서 작동합니다.

{!!strlen($post->content) > 200 ? substr($post->content,0,200) : $post->content!!}

2

아래 예와 같이 문자열 제한을 설정할 수 있습니다.

<td>{{str_limit($biodata ->description, $limit = 20, $end = '...')}}</td>

공백을 포함하여 20 자만 표시하고 ...로 끝납니다.

예시 이미지문자열 제한의 예를 보여줍니다.


Hey, Brother, 그것은 더 이상 사용되지 않습니다. 답변 업데이트
Mahdi Safari

1

이와 같은 간단한 일을 위해 도우미를 만드는 것이 좋습니다. 예를 들면 다음과 같습니다.

다음 내용 으로 helpers.php파일을 작성 하십시오 /app/helpers.php.

<?php
if (! function_exists('short_string')) {
    function short_string($str) {
            $rest = substr($str, 0, 10);
            return $rest;
    }
}

등록 helper.php에 자동로드에서 당신의composer.json

   "autoload": {
        "files": [
            "app/helpers.php"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    }

그런 다음 블레이드 파일에서 다음을 사용할 수 있습니다.

{{ short_string($whatever_as_text) }}

이 간단한 함수를 앱에서 전역 적으로 사용할 수 있습니다.


0

Laravel 6 업데이트 :

@php
$value = 'Artificial Intelligence';
$var = Str::limit($value, $limit = 15, $end = '');
print_r($var);
@endphp

<p class="card-text">{{ Illuminate\Support\Str::limit($value, 7) }}</p>
<h2 class="main-head">{!! Str::limit($value, 5) !!}</h2>

0

Laravel 4 & 5 (최대 5.7)에서는 문자열의 문자 수를 제한하는 str_limit를 사용할 수 있습니다.

Laravel 7 이상에서는 Str :: limit 도우미를 사용할 수 있습니다.

//For Laravel  to Laravel 7

{{ Illuminate\Support\Str::limit($post->title, 20, $end='...') }}

Laravel 7, {{Str :: limit ($ chamado-> subClient-> name, 10)}} 만 사용
João Mello
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.