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

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

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

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

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

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

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

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



답변

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


답변

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

확인 :


답변

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

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

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

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

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


답변

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 를 처리하기위한 최신 도우미 문서입니다.


답변

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

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


답변

코드를 건조하게 유지하고 콘텐츠가 모델에서 제공되는 경우 약간 다른 접근 방식을 채택해야합니다. 다음과 같이 모델을 편집합니다 (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 }}


답변

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

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