PHP cung cấp hai lựa chọn để khai báo chuỗi có dấu nháy đơn hoặc nháy kép dưới dạng cú pháp heredoc và newdoc .
Chuỗi được đặt trong dấu nháy đơn sẽ không giải thích các ký tự thoát và không mở rộng các biến.
Mặt khác, nếu bạn khai báo một chuỗi được bao bởi dấu nháy kép mà chứa chính ký tự dấu nháy kép, bạn cần phải thoát nó bằng ký hiệu "\". Cú pháp heredoc cung cấp một phương pháp thuận tiện.
Các chuỗi heredoc trong PHP tương tự như chuỗi được đặt trong dấu nháy kép, nhưng không có dấu nháy kép. Điều này có nghĩa là chúng không cần phải thoát khỏi dấu nháy và có thể mở rộng các biến.
$str = <<<IDENTIFIER place a string here it can span multiple lines and include single quote ' and double quotes " IDENTIFIER;
Đầu tiên, bắt đầu với toán tử "<<<". Sau toán tử này, một định danh được cung cấp, sau đó là một dòng mới. Chuỗi sẽ theo sau, và sau đó là cùng một định danh để đóng dấu ngoặc kép. Chuỗi có thể trải dài qua nhiều dòng và bao gồm các dấu nháy đơn (‘) hoặc dấu nháy kép (").
Định danh đóng có thể được thụt vào bằng khoảng trắng hoặc tab, trong trường hợp đó, khoảng thụt sẽ bị loại bỏ khỏi tất cả các dòng trong chuỗi tài liệu.
Định danh phải chỉ chứa các ký tự chữ cái, số và dấu gạch dưới, và bắt đầu bằng một dấu gạch dưới hoặc một ký tự không phải số. Định danh đóng không được chứa bất kỳ ký tự nào khác ngoài dấu chấm phẩy (;). Hơn nữa, ký tự trước và sau định danh đóng phải chỉ là ký tự xuống dòng.
Hãy xem xét ví dụ sau −
<?php $str1 = <<<STRING Hello World PHP Tutorial by TutorialsPoint STRING; echo $str1; ?>
Nó sẽ tạo ra output −
Hello World PHP Tutorial by TutorialsPoint
Định danh đóng có thể có hoặc không có khoảng cách thụt lề sau cột đầu tiên trong trình soạn thảo. Khoảng cách thụt lề, nếu có, sẽ bị loại bỏ. Tuy nhiên, định danh đóng không được thụt lề xa hơn bất kỳ dòng nào trong phần thân. Nếu không, một lỗi phân tích (ParseError) sẽ được phát sinh. Hãy xem xét ví dụ sau và kết quả của nó −
<?php $str1 = <<<STRING Hello World PHP Tutorial by TutorialsPoint STRING; echo $str1; ?>
Nó sẽ tạo ra output −
PHP Parse error: Invalid body indentation level (expecting an indentation level of at least 16) in hello.php on line 3
Các dấu ngoặc kép trong heredoc không cần phải được thoát, nhưng các chuỗi thoát của PHP vẫn có thể được sử dụng. Cú pháp heredoc cũng mở rộng các biến.
<?php $lang="PHP"; echo <<<EOS Heredoc strings in $lang expand vriables. The escape sequences are also interpreted. Here, the hexdecimal ASCII characters produce \x50\x48\x50 EOS; ?>
Nó sẽ tạo ra output −
Heredoc strings in PHP expand vriables. The escape sequences are also interpreted. Here, the hexdecimal ASCII characters produce PHP
Một chuỗi nowdoc trong PHP tương tự như chuỗi heredoc, ngoại trừ việc nó không mở rộng các biến và cũng không giải thích các chuỗi thoát.
<?php $lang="PHP"; $str = <<<'IDENTIFIER' This is an example of Nowdoc string. it can span multiple lines and include single quote ' and double quotes " IT doesn't expand the value of $lang variable IDENTIFIER; echo $str; ?>
Nó sẽ tạo ra output −
This is an example of Nowdoc string. it can span multiple lines and include single quote ' and double quotes " IT doesn't expand the value of $lang variable
Cú pháp nowdoc tương tự như cú pháp heredoc, ngoại trừ việc định danh theo sau toán tử "<<<" cần phải được đặt trong dấu nháy đơn. Định danh của nowdoc cũng tuân theo các quy tắc cho định danh heredoc.
Chuỗi Heredoc giống như chuỗi được đặt trong dấu nháy đôi mà không cần thoát. Chuỗi Nowdoc giống như chuỗi được đặt trong dấu nháy đơn mà không cần thoát.