Để thêm giải thích, mã bên trong các {{ }}
câu lệnh Blade được tự động chuyển qua htmlspecialchars()
chức năng mà php cung cấp. Hàm này có một chuỗi và sẽ tìm thấy tất cả các ký tự dành riêng mà HTML sử dụng. Nhân vật dành riêng là &
<
>
và "
. Sau đó, nó sẽ thay thế các ký tự dành riêng này bằng biến thể thực thể HTML của chúng. Đó là những điều sau đây:
|---------------------|------------------|
| Character | Entity |
|---------------------|------------------|
| & | & |
|---------------------|------------------|
| < | < |
|---------------------|------------------|
| > | > |
|---------------------|------------------|
| " | " |
|---------------------|------------------|
Ví dụ: giả sử chúng ta có câu lệnh php sau:
$hello = "<b>Hello</b>";
Truyền vào lưỡi như {{ $hello }}
sẽ mang lại chuỗi ký tự bạn đã vượt qua:
<b>Hello</b>
Dưới mui xe, nó thực sự sẽ vang như <b>Hello<b>
Nếu chúng ta muốn bỏ qua điều này và thực sự kết xuất nó như một thẻ in đậm, chúng ta thoát khỏi htmlspecialchars()
hàm bằng cách thêm lưỡi cú pháp thoát cung cấp:
{!! $hello !!}
Lưu ý rằng chúng tôi chỉ sử dụng một nẹp xoăn.
Đầu ra của những điều trên sẽ mang lại:
xin chào
Chúng ta cũng có thể sử dụng một hàm tiện dụng khác mà php cung cấp, đó là html_entity_decode()
hàm này. Điều này sẽ chuyển đổi các thực thể HTML thành các ký tự HTML được tôn trọng của chúng. Hãy nghĩ về nó như mặt trái củahtmlspecialchars()
Ví dụ: chúng ta có câu lệnh php sau:
$hello = "<b> Hello <b>";
Bây giờ chúng ta có thể thêm chức năng này vào câu lệnh thoát được thoát:
{!! html_entity_decode($hello) !!}
Điều này sẽ lấy thực thể HTML <
và phân tích nó dưới dạng mã HTML <
, không chỉ là một chuỗi.
Điều tương tự sẽ được áp dụng với lớn hơn thực thể >
sẽ mang lại
xin chào
Toàn bộ điểm thoát ra ở nơi đầu tiên là để tránh các cuộc tấn công XSS. Vì vậy, hãy thật cẩn thận khi sử dụng cú pháp thoát, đặc biệt nếu người dùng trong ứng dụng của bạn đang tự cung cấp HTML, họ có thể tự tiêm mã theo ý mình.
{!! nl2br($post->description) !!}
làm việc cho tôi nếu tôi chỉ có không gian và br.