답변:
당신은 사용해야합니다
{!! $text !!}
사용하면 문자열이 자동 이스케이프됩니다 {{ $text }}
.
Hello, {!! $name !!}.
" laravel.com/docs/5.5/blade#displaying-data
$text
사용자 입력 이 포함되어 있고 올바르게 이스케이프하지 않으면 보안 문제 일 가능성이 큽니다 . 예를 들어 HTML을 포함하여 XSS를 허용 할 수 $text = 'Hello <b>'.$_GET['name'].'</b>';
있으므로 위험 $_GET['name']
합니다. 당신은 할 $text = 'Hello <b>'.htmlentities($_GET['name']).'</b>';
수 있고 안전 할 것입니다.
<meta cc="grâce à">
블레이드에 표시하고 싶다면 다음과 같이 보일 것 <meta cc="grâce à">
입니다. 그래서 나를위한 대답은 @Praveen_Dabral 's
다른 방법이 있습니다. 객체 목적이 html을 렌더링하는 것이라면 메소드 \Illuminate\Contracts\Support\Htmlable
가있는 계약을 구현할 수 있습니다 toHtml()
.
그런 다음 블레이드에서 해당 객체를 다음과 같이 렌더링 할 수 있습니다 {{ $someObject }}
( {!! !!}
구문이 필요 없음 ).
또한 html 속성을 반환하고 html 속성을 알고 \Illuminate\Support\HtmlString
싶다면 다음과 같이 클래스를 사용 하십시오.
public function getProductDescription()
{
return new HtmlString($this->description);
}
그런 다음처럼 사용하십시오 {{ $product->getProductDescription() }}
.
물론 페이지에 원시 HTML을 직접 렌더링 할 때는 책임을 져야합니다.
이 시도. 그것은 나를 위해 일했다.
{{ html_entity_decode($text) }}
Laravel Blade 템플릿에서 {{}}은 html을 이스케이프합니다. 컨트롤러에서 HTML을 표시하려면 문자열에서 HTML을 디코딩하십시오.
그것의 간단한
{!! $text !!}
laravel은 dom 요소로 컴파일 {{$text}}
하고 문자열로 인쇄
라 라벨 5에서 여러 가지 방법으로 할 수 있습니다.
{!! $text !!}
{!! html_entity_decode($text) !!}
다음과 같은 조건이있는 경우 처음 사용하는 세 가지 방법을 사용하여 그렇게 할 수 있습니다
{!! $text !!}
두 번째 방법입니다
<td class="nowrap">
@if( $order->status == '0' )
<button class="btn btn-danger">Inactive</button>
@else
<button class="btn btn-success">Active</button>
@endif
</td>
블레이드에서 삼항 연산자를 사용하기위한 세 번째 올바른 방법
<td class="nowrap">
{!! $order->status=='0' ?
'<button class="btn btn-danger">Inactive</button> :
'<button class="btn btn-success">Active</button> !!}
</td>
나는 세 번째 방법이 블레이드의 중고 삼항 연산자에 완벽하기를 바랍니다.
추가 설명을 추가하기 위해 Blade {{ }}
문 내부의 코드 htmlspecialchars()
는 PHP가 제공 하는 기능을 통해 자동으로 전달됩니다 . 이 함수는 문자열을 받아서 HTML이 사용하는 모든 예약 문자를 찾습니다. 예약 문자는 &
<
>
및 "
입니다. 그런 다음 예약 된 문자를 HTML 엔티티 변형으로 바꿉니다. 다음은 무엇입니까?
|---------------------|------------------|
| Character | Entity |
|---------------------|------------------|
| & | & |
|---------------------|------------------|
| < | < |
|---------------------|------------------|
| > | > |
|---------------------|------------------|
| " | " |
|---------------------|------------------|
예를 들어 다음과 같은 php 문이 있다고 가정합니다.
$hello = "<b>Hello</b>";
{{ $hello }}
전달한 리터럴 문자열을 생성하는 것처럼 블레이드로 전달됩니다.
<b>Hello</b>
후드 아래에서 실제로 <b>Hello<b>
이를 무시하고 실제로 굵은 체 태그로 렌더링 htmlspecialchars()
하려면 이스케이프 구문 블레이드가 제공 하는 기능을 이스케이프 처리합니다.
{!! $hello !!}
중괄호는 하나만 사용합니다.
위의 결과는 다음과 같습니다.
여보세요
우리는 또한 PHP가 제공하는 또 다른 편리한 함수를 사용할 수 있습니다 html_entity_decode()
. 그러면 HTML 엔터티가 관련 HTML 문자로 변환됩니다. 그것을 반대로 생각하십시오htmlspecialchars()
예를 들어 다음과 같은 PHP 문이 있다고 가정 해보십시오.
$hello = "<b> Hello <b>";
이제이 함수를 이스케이프 된 블레이드 문에 추가 할 수 있습니다.
{!! html_entity_decode($hello) !!}
이것은 HTML 엔터티를 가져 와서 문자열이 아닌 <
HTML 코드로 구문 분석 <
합니다.
보다 큼 엔터티에도 동일하게 적용됩니다. >
어느 것이
여보세요
우선 탈출의 요점은 XSS 공격을 피하는 것입니다. 따라서 이스케이프 구문을 사용할 때는 특히 응용 프로그램의 사용자가 HTML을 직접 제공하는 경우 원하는대로 고유 코드를 삽입 할 수 있으므로주의해야합니다.
데이터 사용을 피하려면
{{ $html }}
데이터 사용을 피하고 싶지 않은 경우
{!! $html !!}
하지만 Laravel-4까지는
{{ HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) }}
라 라벨 -5에 오면
{!! HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) !!}
PHP 함수로도이를 수행 할 수 있습니다
{{ html_entity_decode($data) }}
이 함수의 매개 변수에 대한 PHP 문서를 통해 이동
이것은 Laravel 5.6에서 잘 작동합니다
<?php echo "$text"; ?>
다른 방법으로
{!! $text !!}
HTML 코드를 렌더링하지 않고 문자열로 인쇄합니다.
자세한 내용은 오픈 링크 :- 블레이드를 사용하여 HTML 표시
{!! nl2br($post->description) !!}
공백과 br 만 있으면 나를 위해 일합니다.