หากต้องการเพิ่มคำอธิบายเพิ่มเติมโค้ดภายใน{{ }}
ข้อความสั่งBlade จะถูกส่งผ่านไปยังhtmlspecialchars()
ฟังก์ชันที่ php จัดเตรียมโดยอัตโนมัติ ฟังก์ชั่นนี้ใช้เวลาในสตริงและจะค้นหาตัวละครที่สงวนไว้ทั้งหมดที่ HTML ใช้ ตัวละครลิขสิทธิ์เป็นและ&
<
>
"
จากนั้นจะแทนที่อักขระที่สงวนไว้เหล่านี้ด้วยตัวแปรเอนทิตี HTML ของพวกเขา ซึ่งมีดังต่อไปนี้:
|---------------------|------------------|
| Character | Entity |
|---------------------|------------------|
| & | & |
|---------------------|------------------|
| < | < |
|---------------------|------------------|
| > | > |
|---------------------|------------------|
| " | " |
|---------------------|------------------|
ตัวอย่างเช่นสมมติว่าเรามีคำสั่ง php ดังต่อไปนี้:
$hello = "<b>Hello</b>";
ส่งผ่านเบลดตามที่{{ $hello }}
จะให้ค่าสตริงตามตัวอักษรที่คุณผ่าน:
<b>Hello</b>
ใต้ฝากระโปรงมันจะสะท้อนออกมาอย่างแท้จริง <b>Hello<b>
หากเราต้องการหลีกเลี่ยงสิ่งนี้และทำให้มันเป็นแท็กตัวหนาเราหนีออกมาจาก htmlspecialchars()
ฟังก์ชั่นโดยการเพิ่มเบลดไวยากรณ์ของ escape:
{!! $hello !!}
โปรดทราบว่าเราใช้วงเล็บปีกกาเพียงอันเดียว
ผลลัพธ์ข้างต้นจะให้ผล:
สวัสดี
นอกจากนี้เรายังสามารถใช้ฟังก์ชั่นที่มีประโยชน์อีกอย่างที่ php จัดให้ซึ่งเป็นhtml_entity_decode()
ฟังก์ชั่น สิ่งนี้จะแปลงเอนทิตี HTML เป็นอักขระ HTML ที่ยอมรับ คิดว่ามันเป็นสิ่งที่ตรงกันข้ามhtmlspecialchars()
ตัวอย่างเช่นเรามีคำสั่ง php ต่อไปนี้:
$hello = "<b> Hello <b>";
ตอนนี้เราสามารถเพิ่มฟังก์ชั่นนี้ลงในคำสั่งเบลดของเรา:
{!! html_entity_decode($hello) !!}
สิ่งนี้จะใช้เอนทิตี HTML <
และแยกวิเคราะห์เป็นรหัส HTML <
ไม่ใช่เฉพาะสตริง
เช่นเดียวกันจะนำไปใช้กับองค์กรที่ใหญ่กว่า >
ซึ่งจะให้ผลผลิต
สวัสดี
จุดทั้งหมดของการหลบหนีในสถานที่แรกคือการหลีกเลี่ยงการโจมตี XSS ดังนั้นโปรดระมัดระวังเมื่อใช้ไวยากรณ์การหลีกเลี่ยงโดยเฉพาะอย่างยิ่งหากผู้ใช้ในแอปพลิเคชันของคุณให้ HTML ด้วยตนเองพวกเขาสามารถฉีดโค้ดของตัวเองตามที่พวกเขาต้องการ
{!! nl2br($post->description) !!}
เหมาะกับฉันถ้าฉันมีที่ว่างและ br