Um weitere Erklärungen hinzuzufügen, wird Code in Blade- {{ }}
Anweisungen automatisch durch die von htmlspecialchars()
PHP bereitgestellte Funktion geleitet. Diese Funktion nimmt eine Zeichenfolge auf und findet alle reservierten Zeichen, die HTML verwendet. Reservierte Zeichen sind &
<
>
und "
. Diese reservierten Zeichen werden dann durch ihre HTML-Entitätsvariante ersetzt. Welches sind die folgenden:
|---------------------|------------------|
| Character | Entity |
|---------------------|------------------|
| & | & |
|---------------------|------------------|
| < | < |
|---------------------|------------------|
| > | > |
|---------------------|------------------|
| " | " |
|---------------------|------------------|
Angenommen, wir haben die folgende PHP-Anweisung:
$hello = "<b>Hello</b>";
In die Klinge übergeben {{ $hello }}
, um die wörtliche Zeichenfolge zu erhalten, die Sie übergeben haben:
<b>Hello</b>
Unter der Haube würde es tatsächlich als widerhallen <b>Hello<b>
Wenn wir dies umgehen und es tatsächlich als fettes Tag rendern möchten, können wir die htmlspecialchars()
Funktion umgehen, indem wir das Escape-Syntax-Blade hinzufügen, das Folgendes bietet:
{!! $hello !!}
Beachten Sie, dass wir nur eine geschweifte Klammer verwenden.
Die Ausgabe der obigen würde ergeben:
Hallo
Wir könnten auch eine andere praktische Funktion verwenden, die PHP bietet, nämlich die html_entity_decode()
Funktion. Dadurch werden HTML-Entitäten in ihre respektierten HTML-Zeichen konvertiert. Betrachten Sie es als das Gegenteil vonhtmlspecialchars()
Nehmen wir zum Beispiel an, wir haben die folgende PHP-Anweisung:
$hello = "<b> Hello <b>";
Wir könnten diese Funktion jetzt zu unserer Escape-Blade-Anweisung hinzufügen:
{!! html_entity_decode($hello) !!}
Dadurch wird die HTML-Entität <
als HTML-Code <
und nicht nur als Zeichenfolge analysiert .
Gleiches gilt für die Entität größer als >
was ergeben würde
Hallo
Der springende Punkt bei der Flucht ist zunächst, XSS-Angriffe zu vermeiden. Seien Sie also sehr vorsichtig, wenn Sie die Escape-Syntax verwenden, insbesondere wenn Benutzer in Ihrer Anwendung den HTML-Code selbst bereitstellen, können sie ihren eigenen Code nach Belieben einfügen.
{!! nl2br($post->description) !!}
funktioniert für mich, wenn ich nur Leerzeichen und br habe.