Щоб додати додаткове пояснення, код всередині {{ }}
операторів 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 самі, вони можуть вводити власний код за своїм бажанням.
{!! nl2br($post->description) !!}
працює для мене, якщо у мене є лише пробіли та бр.