Chuỗi(String) trong PHP là một chuỗi các ký tự, tức là, được sử dụng để lưu trữ và thao tác văn bản. PHP chỉ hỗ trợ bộ 256 ký tự và do đó nó không hỗ trợ Unicode nguyên gốc. Có 4 cách để chỉ định một chuỗi ký tự trong PHP.

  1. trích dẫn đơn
  2. trích dẫn kép
  3. cú pháp heredoc
  4. cú pháp newdoc (kể từ PHP 5.3)

1. Trích dẫn đơn

Chúng ta có thể tạo một chuỗi trong PHP bằng cách đặt văn bản trong một dấu nháy đơn. Đây là cách dễ nhất để chỉ định chuỗi trong PHP.

Để chỉ định một trích dẫn đơn với dấu gạch chéo ngược, để chỉ định một dấu gạch chéo ngược bằng cách sử dụng dấu gạch chéo ngược kép(\\). Tất cả các trường hợp khác có dấu gạch chéo ngược như \ r hoặc \ n, sẽ được xuất ra kết quả giống như chúng được chỉ định thay vì có bất kỳ ý nghĩa đặc biệt nào.

Ví dụ

Sau đây là một số ví dụ để hiểu Chuỗi trong PHP được trích dẫn đơn theo cách tốt hơn:

ví dụ 1

<?php  
       $str='Hello text within single quote';  
       echo $str;  
?>  

Đầu ra:

Hello text within single quote

Chúng ta có thể lưu trữ nhiều dòng văn bản, ký tự đặc biệt và chuỗi thoát trong một chuỗi PHP được trích dẫn đơn.

Ví dụ 2

<?php  
$str1='Hello text   
multiple line  
text within single quoted string';  
$str2='Using double "quote" directly inside single quoted string';  
$str3='Using escape sequences \n in single quoted string';  
echo "$str1 <br/> $str2 <br/> $str3";  
?>  

Đầu ra:

Hello text multiple line text within single quoted string 
Using double "quote" directly inside single quoted string 
Using escape sequences \n in single quoted string

Ví dụ 3

<?php  
$num1=10;   
$str1='trying variable $num1';  
$str2='trying backslash n and backslash t inside single quoted string \n \t';  
$str3='Using single quote \'my quote\' and \\backslash';  
echo "$str1 <br/> $str2 <br/> $str3";  
?> 

Đầu ra:

trying variable $num1 
trying backslash n and backslash t inside single quoted string \n \t 
Using single quote 'my quote' and \backslash

Lưu ý: Trong các chuỗi PHP được trích dẫn đơn lẻ, hầu hết các chuỗi và biến thoát sẽ không được diễn giải. Tuy nhiên, chúng ta có thể sử dụng dấu nháy đơn thông qua \ ‘ và dấu gạch chéo ngược qua \\ bên trong các chuỗi PHP được trích dẫn đơn lẻ.

2. Trích dẫn kép

Trong PHP, chúng ta cũng có thể chỉ định chuỗi thông qua việc bao quanh văn bản trong dấu ngoặc kép. Nhưng các chuỗi và biến thoát sẽ được diễn giải bằng cách sử dụng các chuỗi PHP trích dẫn kép.

ví dụ 1

<?php  
$str="Hello text within double quote";  
echo $str;  
?>  

Đầu ra:

Hello text within double quote

Bây giờ, bạn không thể sử dụng dấu ngoặc kép trực tiếp bên trong chuỗi dấu ngoặc kép.

Ví dụ 2

<?php  
$str1="Using double "quote" directly inside double quoted string";  
echo $str1;  
?>  

Đầu ra:

Parse error: syntax error, unexpected 'quote' (T_STRING) in C:cafedev\wamp\www\string1.php on line 2

Chúng ta có thể lưu trữ nhiều dòng văn bản, ký tự đặc biệt và chuỗi thoát(chuỗi xuống dòng)(escape) trong một chuỗi PHP được trích dẫn kép.

Ví dụ 3

<?php  
$str1="Hello text   
multiple line  
text within double quoted string";  
$str2="Using double \"quote\" with backslash inside double quoted string";  
$str3="Using escape sequences \n in double quoted string";  
echo "$str1 <br/> $str2 <br/> $str3";  
?>  

Đầu ra:

Hello text multiple line text within double quoted string 
Using double "quote" with backslash inside double quoted string 
Using escape sequences in double quoted string

Trong các chuỗi được trích dẫn kép, biến sẽ được hiểu .

Ví dụ 4

<?php  
$num1=10;   
echo "Number is: $num1";  
?> 

Đầu ra:

Number is: 10

3. Heredoc

Cú pháp Heredoc (<<<) là cách thứ ba để phân tách các chuỗi. Trong cú pháp Heredoc, một số nhận dạng được cung cấp sau toán tử <<< heredoc này, và ngay lập tức một dòng mới được bắt đầu để viết bất kỳ văn bản nào. Để đóng dấu ngoặc kép, chuỗi theo sau chính nó và sau đó cung cấp lại code định danh tương tự. Code định danh đóng đó phải bắt đầu từ dòng mới mà không có bất kỳ khoảng trắng hoặc tab nào.

Quy tắc đặt tên

Giá trị Id phải tuân theo quy tắc đặt tên rằng nó chỉ được chứa các ký tự chữ và số và dấu gạch dưới và phải bắt đầu bằng một dấu gạch dưới hoặc một ký tự không phải chữ số.

Ví dụ

Ví dụ hợp lệ

<?php  
    $str = <<<Demo  
It is a valid example  
Demo;    //Valid code as whitespace or tab is not valid before closing identifier  
echo $str;  
?>  

Đầu ra:

It is a valid example 

Ví dụ không hợp lệ

Chúng tôi không thể sử dụng bất kỳ khoảng trắng hoặc tab nào trước và sau số nhận dạng và dấu chấm phẩy, có nghĩa là số id không được thụt vào. Code định danh phải bắt đầu từ dòng mới.

<?php  
    $str = <<<Demo  
It is Invalid example  
       Demo;    //Invalid code as whitespace or tab is not valid before closing identifier  
echo $str;  
?> 

Code này sẽ tạo ra lỗi.

Đầu ra:

Parse error: syntax error, unexpected end of file in C:cafedev\xampp\htdocs\xampp\PMA\heredoc.php on line 7

Heredoc tương tự như chuỗi được trích dẫn kép, không có dấu ngoặc kép, có nghĩa là không bắt buộc phải trích dẫn trong heredoc. Nó cũng có thể in giá trị của biến.

Thí dụ

<?php  
    $city = 'Delhi';  
    $str = <<<DEMO  
Hello! My name is Misthi, and I live in $city.  
DEMO;  
    echo $str;  
 ?>  

Đầu ra:

Hello! My name is Misthi, and I live in Delhi. 

Thí dụ

Chúng ta có thể thêm nhiều dòng văn bản ở đây giữa cú pháp heredoc.

<?php  
    $str = <<<DEMO  
It is the example   
of multiple  
lines of text.  
DEMO;  
    echo $str;  
  
echo '</br>';  
  
echo <<<DEMO    // Here we are not storing string content in variable str.   
It is the example   
of multiple  
lines of text.  
DEMO;  
 ?>  

Đầu ra:

It is the example of multiple lines of text.
It is the example of multiple lines of text.

Dưới đây là ví dụ với lớp và biến của chúng

Thí dụ

<?php  
class heredocExample{  
        var $demo;  
        var $example;  
        function __construct()  
        {  
                $this->demo = 'DEMO';  
                $this->example = array('Example1', 'Example2', 'Example3');  
        }  
    }  
    $heredocExample = new heredocExample();  
    $name =  'Cafedev';  
      
    echo <<<ECO  
    My name is "$name". I am printing some $heredocExample->demo example.  
    Now, I am printing {$heredocExample->example[1]}.  
    It will print a capital 'A': \x41  
ECO;  
 ?> 

Đầu ra:

My name is "Cafedev". I am printing some DEMO example. 
Now, I am printing Example2. 
It will print a capital 'A': A

4. Newdoc

Newdoc tương tự như heredoc, nhưng trong newdoc phân tích cú pháp không được thực hiện. Nó cũng được xác định bằng ba ký hiệu nhỏ hơn <<< theo sau là một số nhận dạng. Nhưng ở đây giá trị id được đặt trong một dấu ngoặc kép, ví dụ: <<< ‘EXP’ . Newdoc tuân theo quy tắc tương tự như heredocs.

Sự khác biệt giữa newdoc và heredoc là – Newdoc là một chuỗi được trích dẫn đơn trong khi heredoc là một chuỗi được trích dẫn kép .

Lưu ý: Newdoc hoạt động như một dấu ngoặc kép.

Ví dụ 1:

<?php  
    $str = <<<'DEMO'  
    Welcome to cafedev.vn.  
           Learn with newdoc example.  
DEMO;  
echo $str;  
echo '</br>';  
  
echo <<< 'Demo'    // Here we are not storing string content in variable str.  
    Welcome to cafedev.vn.  
           Learn with newdoc example.  
Demo;  
?>  

Đầu ra:

Welcome to cafedev.vn. Learn with newdoc example.
Welcome to cafedev.vn. Learn with newdoc example.

Thí dụ

Ví dụ dưới đây cho thấy newdoc không in giá trị của biến.

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

<?php  
class heredocExample{  
        var $demo;  
        var $example;  
        function __construct()  
        {  
                $this->demo = 'DEMO';  
                $this->example = array('Example1', 'Example2', 'Example3');  
        }  
    }  
    $heredocExample = new heredocExample();  
    $name =  'Gunjan';  
      
    echo <<<ECO  
    My name is "$name". I am printing some $heredocExample->demo example.  
    Now, I am printing {$heredocExample->example[1]}.  
    It will print a capital 'A': \x41  
ECO;  
 ?>  

Đầu ra:

Kết quả của chương trình trên sẽ như sau:

My name is "$name". I am printing some $heredocExample->demo example. 
Now, I am printing {$heredocExample->example[1]}. 
It will print a capital 'A': \x41

Lưu ý: newdoc được hỗ trợ bởi các phiên bản PHP 5.3.0+.

Ví dụ không hợp lệ

Chúng ta không thể sử dụng bất kỳ khoảng trắng hoặc tab nào trước và sau số id và dấu chấm phẩy, có nghĩa là số id không được thụt vào. Code định danh phải bắt đầu từ dòng mới. Nó cũng không hợp lệ trong newdoc giống như heredoc.

<?php  
    $str = <<<'Demo'  
It is Invalid example  
Demo;  //Invalid code as whitespace or tab is not valid before closing identifier  
echo $str;  
?>  

Code này sẽ tạo ra lỗi.

Đầu ra:

Parse error: syntax error, unexpected end of file in C:cafedev\xampp\htdocs\xampp\PMA\newdoc.php on line 7

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!