Hướng dẫn to string php - thành chuỗi php

  • Trang chủ
  • Hướng dẫn học
  • Học PHP
  • PHP string

PHP string

Định nghĩa và cách dùng cơ bản đã được thể hiện ở phần Data Type - string, phần này sẽ nói về cách dùng một số hàm cơ bản của string.

Lấy chiều dài của chuỗi

  • Lấy chiều dài của chuỗi:
    8
  • 8 sẽ trả về tổng số ký tự có trong chuỗi.
  • Đối với tiếng Việt có dấu thì mỗi chữ có dấu sẽ tính là 3,
    0

PHP viết:

Hiển thị trình duyệt:

Đếm số từ của chuỗi

  • Đếm số từ của chuỗi:
    1
  • 1 sẽ trả về tổng số từ có trong chuỗi.
  • Đối với tiếng Việt có dấu thì mỗi từ có dấu sẽ tính là 2,
    3

PHP viết:

Hiển thị trình duyệt:

Đếm số từ của chuỗi

  • Đếm số từ của chuỗi:
    1

PHP viết:

Hiển thị trình duyệt:

Đếm số từ của chuỗi

  • Đếm số từ của chuỗi:
    1
  • 1 sẽ trả về tổng số từ có trong chuỗi.

PHP viết:

Hiển thị trình duyệt:

Đếm số từ của chuỗi

Đếm số từ của chuỗi:

1

  • 6

1 sẽ trả về tổng số từ có trong chuỗi.vị trí cần lấy đến hết chuỗi.

PHP viết:

Hiển thị trình duyệt:

  • 7

Đếm số từ của chuỗivị trí bắt đầu lấy cho đến chiều dài chuỗi con được tạo.

PHP viết:

Hiển thị trình duyệt:

Đếm số từ của chuỗi

  • Đếm số từ của chuỗi:
    1
  • 1 sẽ trả về tổng số từ có trong chuỗi.chuỗi định nghĩa sẽ lấy đến hết chuỗi.

PHP viết:

Hiển thị trình duyệt:

Sideshowanthony tại googlemail dot com ¶string is series of characters, where a character is the same as a byte. This means that PHP only supports a 256-character set, and hence does not offer native Unicode support. See details of the string type.

Lelon tại Lelon Dot Net: On 32-bit builds, a string can be as large as up to 2GB (2147483647 bytes maximum)

Cú pháp

Một chuỗi chữ có thể được chỉ định theo bốn cách khác nhau:string literal can be specified in four different ways:

  • được trích dẫn đơn
  • Double Trích dẫn
  • HEREDOC Cú pháp
  • Cú pháp NowDoc

Được trích dẫn đơn

Cách đơn giản nhất để chỉ định một chuỗi là đặt nó trong các trích dẫn đơn (ký tự

9).string is to enclose it in single quotes (the character 
9). 

Để chỉ định một trích dẫn đơn theo nghĩa đen, hãy thoát nó bằng một dấu gạch chéo ngược (

0). Để chỉ định một dấu gạch chéo ngược theo nghĩa đen, nhân đôi nó (
1). Tất cả các trường hợp khác của dấu gạch chéo ngược sẽ được coi là một dấu gạch chéo ngược theo nghĩa đen: điều này có nghĩa là các chuỗi thoát khác mà bạn có thể được sử dụng, chẳng hạn như 
2 hoặc 
3, sẽ được đầu ra theo nghĩa đen theo nghĩa đen thay vì có bất kỳ ý nghĩa đặc biệt nào.

Lưu ý: Không giống như các cú pháp, các biến và trình tự thoát được trích dẫn kép và heredoc cho các ký tự đặc biệt sẽ không được mở rộng khi chúng xảy ra trong các chuỗi được trích dẫn đơn.: Unlike the double-quoted and heredoc syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings.

4

5

6

Double Trích dẫn

Nếu chuỗi được đặt trong các trình điều khiển kép ("), PHP sẽ diễn giải các chuỗi thoát sau đây cho các ký tự đặc biệt:string is enclosed in double-quotes ("), PHP will interpret the following escape sequences for special characters:

Những nhân vật đã trốn thoát
Sự phối hợpNghĩa
3
LineFeed (LF hoặc 0x0a (10) trong ASCII)
2
Trở lại vận chuyển (CR hoặc 0x0D (13) trong ASCII)
9
Tab ngang (HT hoặc 0x09 (9) trong ASCII)
0
Tab dọc (VT hoặc 0x0b (11) trong ASCII)
1
Escape (ESC hoặc 0x1B (27) trong ASCII)
2
Form Feed (FF hoặc 0x0C (12) trong ASCII)
1
dấu vết chéo ngược
4
ký hiệu đô la
5
kép
6
Trình tự các ký tự khớp với biểu thức chính quy là một ký tự trong ký hiệu bát phân, âm thầm tràn để phù hợp với byte (ví dụ: "\ 400" === "\ 000")
7
Trình tự các ký tự phù hợp với biểu thức chính quy là một ký tự trong ký hiệu thập lục phân
8
Trình tự các ký tự khớp với biểu thức chính quy là một CodePoint Unicode, sẽ được xuất vào chuỗi khi biểu diễn UTF-8 của CodePoint đó

Như trong các chuỗi được trích dẫn duy nhất, việc thoát khỏi bất kỳ nhân vật nào khác cũng sẽ dẫn đến dấu gạch chéo ngược cũng được in.strings, escaping any other character will result in the backslash being printed too.

Tính năng quan trọng nhất của các chuỗi được trích dẫn kép là thực tế là các tên biến sẽ được mở rộng. Xem phân tích cú pháp chuỗi để biết chi tiết.strings is the fact that variable names will be expanded. See string parsing for details.

Heredoc

Cách thứ ba để phân định chuỗi là cú pháp Heredoc:

9. Sau khi vận hành này, một định danh được cung cấp, sau đó là một dòng mới. Bản thân chuỗi theo sau, và sau đó cùng một định danh một lần nữa để đóng trích dẫn.strings is the heredoc syntax: 
9. After this operator, an identifier is provided, then a newline. The string itself follows, and then the same identifier again to close the quotation. 

Định danh đóng có thể được thụt vào không gian hoặc tab, trong trường hợp đó, thụt lề sẽ bị tước khỏi tất cả các dòng trong chuỗi Doc. Trước PHP 7.3.0, mã định danh đóng phải bắt đầu trong cột đầu tiên của dòng.

Ngoài ra, mã định danh đóng phải tuân theo các quy tắc đặt tên giống như bất kỳ nhãn nào khác trong PHP: nó chỉ chứa các ký tự chữ và số và gạch dưới, và phải bắt đầu với ký tự không chữ số hoặc dấu gạch dưới.

Ví dụ #1 Ví dụ về Heredoc cơ bản kể từ Php 7.3.0

0

Đầu ra của ví dụ trên trong Php 7.3:

Nếu mã định danh đóng được thụt vào hơn bất kỳ dòng nào của cơ thể, thì sẽ bị ném parseerror:ParseError will be thrown:

Ví dụ #2 Định danh đóng không được thụt vào nhiều hơn bất kỳ dòng nào của cơ thể

1

Đầu ra của ví dụ trên trong Php 7.3:

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4

Nếu mã định danh đóng được thụt vào hơn bất kỳ dòng nào của cơ thể, thì sẽ bị ném parseerror:ParseError will be thrown. These whitespace constraints have been included because mixing tabs and spaces for indentation is harmful to legibility.

Ví dụ #2 Định danh đóng không được thụt vào nhiều hơn bất kỳ dòng nào của cơ thể

2

3

Tuy nhiên, nếu định danh đóng được thụt vào, các tab cũng có thể được sử dụng, tuy nhiên, các tab và khoảng trống không được kết hợp liên quan đến việc thụt vào định danh đóng và thụt của cơ thể (lên đến định danh đóng). Trong bất kỳ trường hợp nào trong số này, một người sinh viên sẽ bị ném. Những ràng buộc khoảng trắng này đã được đưa vào vì trộn các tab và không gian để thụt vào có hại cho tính dễ đọc.

Đầu ra của ví dụ trên trong Php 7.3:

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8

Nếu mã định danh đóng được thụt vào hơn bất kỳ dòng nào của cơ thể, thì sẽ bị ném parseerror:

Ví dụ #2 Định danh đóng không được thụt vào nhiều hơn bất kỳ dòng nào của cơ thể

5

Đầu ra của ví dụ trên trong Php 7.3:

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}

Nếu mã định danh đóng được thụt vào hơn bất kỳ dòng nào của cơ thể, thì sẽ bị ném parseerror:

Ví dụ #2 Định danh đóng không được thụt vào nhiều hơn bất kỳ dòng nào của cơ thểParseError.

Tuy nhiên, nếu định danh đóng được thụt vào, các tab cũng có thể được sử dụng, tuy nhiên, các tab và khoảng trống không được kết hợp liên quan đến việc thụt vào định danh đóng và thụt của cơ thể (lên đến định danh đóng). Trong bất kỳ trường hợp nào trong số này, một người sinh viên sẽ bị ném. Những ràng buộc khoảng trắng này đã được đưa vào vì trộn các tab và không gian để thụt vào có hại cho tính dễ đọc.

6

Đầu ra của ví dụ trên trong Php 7.3:

0

Nếu mã định danh đóng được thụt vào hơn bất kỳ dòng nào của cơ thể, thì sẽ bị ném parseerror:

Nếu mã định danh đóng được thụt vào hơn bất kỳ dòng nào của cơ thể, thì sẽ bị ném parseerror:

Ví dụ #2 Định danh đóng không được thụt vào nhiều hơn bất kỳ dòng nào của cơ thể

Nếu quy tắc này bị phá vỡ và định danh đóng không "sạch", nó sẽ không được coi là một định danh đóng và PHP sẽ tiếp tục tìm kiếm một định danh. Nếu không tìm thấy mã định danh đóng thích hợp trước khi kết thúc tệp hiện tại, lỗi phân tích cú pháp sẽ dẫn đến dòng cuối cùng.

Ví dụ #6 Ví dụ không hợp lệ, trước Php 7.3.0

9

Ví dụ #7 Ví dụ hợp lệ, ngay cả khi trước PHP 7.3.0

0

Heredocs chứa các biến không thể được sử dụng để khởi tạo các thuộc tính lớp.

Văn bản Heredoc hoạt động giống như một chuỗi được trích dẫn kép, không có trích dẫn kép. Điều này có nghĩa là các trích dẫn trong Heredoc không cần phải thoát ra, nhưng các mã thoát được liệt kê ở trên vẫn có thể được sử dụng. Các biến được mở rộng, nhưng phải cẩn thận khi biểu thị các biến phức tạp bên trong heredoc như với các chuỗi.string, without the double quotes. This means that quotes in a heredoc do not need to be escaped, but the escape codes listed above can still be used. Variables are expanded, but the same care must be taken when expressing complex variables inside a heredoc as with strings.

Ví dụ #8 ví dụ về chuỗi heredoc trích dẫn

1

2

3

Ví dụ trên sẽ xuất ra:

1

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng:

Ví dụ #9 heredoc trong ví dụ đối số

4

Có thể khởi tạo các biến tĩnh và thuộc tính lớp/hằng số bằng cú pháp Heredoc:

Ví dụ #10 Sử dụng Heredoc để khởi tạo các giá trị tĩnh

5

6

7

Định danh HEREDOC mở có thể tùy chọn được đặt trong các trích dẫn kép:

Ví dụ #11 Sử dụng trích dẫn kép trong Heredoc

8

Nowdoc

NowDocs là các chuỗi được trích xuất một lần mà Heredocs là các chuỗi được trích dẫn kép. Một nowDoc được chỉ định tương tự như Heredoc, nhưng không có phân tích cú pháp nào được thực hiện bên trong một nowDoc. Cấu trúc là lý tưởng để nhúng mã PHP hoặc các khối văn bản lớn khác mà không cần phải trốn thoát. Nó chia sẻ một số tính năng chung với cấu trúc SGML

9, trong đó nó tuyên bố một khối văn bản không dành cho phân tích cú pháp.

Một nowDoc được xác định với cùng một trình tự

9 được sử dụng cho Heredocs, nhưng số nhận dạng sau đây được đặt trong các trích dẫn đơn, ví dụ: 
PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
1. Tất cả các quy tắc cho số nhận dạng Heredoc cũng áp dụng cho các định danh NowDoc, đặc biệt là các quy tắc liên quan đến sự xuất hiện của số nhận dạng đóng.

Ví dụ #12 NowDoc Chuỗi trích dẫn ví dụ

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
2

Ví dụ trên sẽ xuất ra:

2

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng:

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
3

2

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
5

Ví dụ trên sẽ xuất ra:

3

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng:

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
6

Ví dụ #9 heredoc trong ví dụ đối số

Có thể khởi tạo các biến tĩnh và thuộc tính lớp/hằng số bằng cú pháp Heredoc:string is specified in double quotes or with heredoc, variables are parsed within it.

Ví dụ #10 Sử dụng Heredoc để khởi tạo các giá trị tĩnharray value, or an object property in a string with a minimum of effort.

Định danh HEREDOC mở có thể tùy chọn được đặt trong các trích dẫn kép:

Ví dụ #11 Sử dụng trích dẫn kép trong Heredoc

Nowdoc

PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
8

5

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
0

Ví dụ trên sẽ xuất ra:

4

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng:array index or an object property can be parsed. With array indices, the closing square bracket (

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
1) marks the end of the index. The same rules apply to object properties as to simple variables.

Ví dụ #9 heredoc trong ví dụ đối số

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
2

5

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
4

Ví dụ trên sẽ xuất ra:

5

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng:

Ví dụ #9 heredoc trong ví dụ đối số

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
5

Ví dụ trên sẽ xuất ra:

6

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng:

Ví dụ #9 heredoc trong ví dụ đối số

Có thể khởi tạo các biến tĩnh và thuộc tính lớp/hằng số bằng cú pháp Heredoc:

Ví dụ #10 Sử dụng Heredoc để khởi tạo các giá trị tĩnhstring representation can be included via this syntax. The expression is written the same way as it would appear outside the string, and then wrapped in

PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
6 and
PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
7. Since
PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
6 can not be escaped, this syntax will only be recognised when the
PHP Parse error:  Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 4
7 immediately follows the
PHP Parse error:  Invalid indentation - tabs and spaces cannot be mixed in example.php line 8
6. Use
array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
1 to get a literal
array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
2. Some examples to make it clear:

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
3

5

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
5

Định danh HEREDOC mở có thể tùy chọn được đặt trong các trích dẫn kép:

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
6

Ví dụ trên sẽ xuất ra:

Cũng có thể sử dụng cú pháp HEREDOC để truyền dữ liệu cho các đối số chức năng::

Ví dụ #9 heredoc trong ví dụ đối số

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
9

00

01

Truy cập và sửa đổi chuỗi theo ký tự

Các ký tự trong các chuỗi có thể được truy cập và sửa đổi bằng cách chỉ định độ lệch dựa trên 0 của ký tự mong muốn sau chuỗi sử dụng khung mảng vuông, như trong $ str [42]. Hãy nghĩ về một chuỗi như một mảng các ký tự cho mục đích này. Có thể sử dụng các hàm Subr () và Subr_Replace () khi bạn muốn trích xuất hoặc thay thế nhiều hơn 1 ký tự.strings may be accessed and modified by specifying the zero-based offset of the desired character after the string using square array brackets, as in $str[42]. Think of a string as an array of characters for this purpose. The functions substr() and substr_replace() can be used when you want to extract or replace more than 1 character.

Lưu ý: Kể từ Php 7.1.0, độ lệch chuỗi âm cũng được hỗ trợ. Chúng chỉ định độ lệch từ cuối chuỗi. Trước đây, độ lệch âm phát ra

02 để đọc (mang lại một chuỗi trống) và 
03 để viết (khiến chuỗi không bị ảnh hưởng).
: As of PHP 7.1.0, negative string offsets are also supported. These specify the offset from the end of the string. Formerly, negative offsets emitted
02
for reading (yielding an empty string) and
03
for writing (leaving the string untouched).

Lưu ý: Trước Php 8.0.0, các chuỗi cũng có thể được truy cập bằng niềng răng, như trong $ str {42}, cho cùng một mục đích. Cú pháp nẹp xoăn này đã được dùng hết là Php 7.4.0 và không còn được hỗ trợ kể từ Php 8.0.0.: Prior to PHP 8.0.0, strings could also be accessed using braces, as in $str{42}, for the same purpose. This curly brace syntax was deprecated as of PHP 7.4.0 and no longer supported as of PHP 8.0.0.

Cảnh báo

Viết vào một miếng đệm ngoài phạm vi Chuỗi với khoảng trắng. Các loại không số nguyên được chuyển đổi thành số nguyên. Loại bù bất hợp pháp phát ra

03. Chỉ có ký tự đầu tiên của chuỗi được gán được sử dụng. Kể từ Php 7.1.0, việc gán một chuỗi trống ném một lỗi nghiêm trọng. Trước đây, nó đã chỉ định một byte null.
03
. Only the first character of an assigned string is used. As of PHP 7.1.0, assigning an empty string throws a fatal error. Formerly, it assigned a NULL byte.

Cảnh báo

Viết vào một miếng đệm ngoài phạm vi Chuỗi với khoảng trắng. Các loại không số nguyên được chuyển đổi thành số nguyên. Loại bù bất hợp pháp phát ra

03. Chỉ có ký tự đầu tiên của chuỗi được gán được sử dụng. Kể từ Php 7.1.0, việc gán một chuỗi trống ném một lỗi nghiêm trọng. Trước đây, nó đã chỉ định một byte null.

Trong nội bộ, chuỗi PHP là mảng byte. Do đó, việc truy cập hoặc sửa đổi một chuỗi bằng cách sử dụng khung mảng không an toàn nhiều byte và chỉ nên được thực hiện với các chuỗi trong mã hóa một byte như ISO-8859-1.: As of PHP 7.1.0, applying the empty index operator on an empty string throws a fatal error. Formerly, the empty string was silently converted to an array.

Lưu ý: Kể từ Php 7.1.0, việc áp dụng toán tử chỉ mục trống trên một chuỗi trống ném một lỗi nghiêm trọng. Trước đây, chuỗi trống được chuyển đổi âm thầm thành một mảng.

05

Ví dụ #17 Một số ví dụ chuỗi

Các độ lệch chuỗi phải là số nguyên hoặc các chuỗi giống như số nguyên, nếu không một cảnh báo sẽ được đưa ra.

06

Ví dụ #18 Ví dụ về độ lệch chuỗi bất hợp pháp

7

Ví dụ trên sẽ xuất ra::

Ghi chú:

09. 

Ví dụ trên sẽ xuất ra::

Ghi chú:

Ví dụ trên sẽ xuất ra::

Ghi chú:

Truy cập các biến của các loại khác (không bao gồm các mảng hoặc đối tượng thực hiện các giao diện thích hợp) bằng cách sử dụng 07 hoặc array(2) { [0] => string(11) "a b c" [1] => string(5) "d e f" } 8 âm thầm trả về 09.

Các ký tự trong chuỗi có thể được truy cập bằng cách sử dụng

07 hoặc 
array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
8.string using the
13 cast or the strval() function. String conversion is automatically done in the scope of an expression where a string is needed. This happens when using the echo or
print functions, or when a variable is compared to a string. The sections on Types and Type Juggling will make the following clearer. See also the
settype() function. 

Truy cập các ký tự trong các chữ viết bằng cách sử dụng cú pháp

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
8 đã được không dùng nữa trong Php 7.4. Điều này đã được gỡ bỏ trong Php 8.0.bool
14
value is converted to the string
15. bool 
16
is converted to
17 (the empty string). This allows conversion back and forth between bool and string values. 

Chuyển đổi thành chuỗiint or float is converted to a string representing the number textually (including the exponent part for floats). Floating point numbers can be converted using exponential notation (

18). 

Ví dụ trên sẽ xuất ra::

Ghi chú:setlocale() function.

Truy cập các biến của các loại khác (không bao gồm các mảng hoặc đối tượng thực hiện các giao diện thích hợp) bằng cách sử dụng

07 hoặc 
array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
8 âm thầm trả về
09.s are always converted to the string 
20; because of this, echo and print can not by themselves show the contents of an array. To
view a single element, use a construction such as 
21. See below for tips on viewing the entire contents. 

Các ký tự trong chuỗi có thể được truy cập bằng cách sử dụng

07 hoặc 
array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
8.objects to string, the magic method __toString must be used.

Truy cập các ký tự trong các chữ viết bằng cách sử dụng cú pháp

array(2) {
  [0] =>
  string(11) "a
  b
    c"
  [1] =>
  string(5) "d e f"
}
8 đã được không dùng nữa trong Php 7.4. Điều này đã được gỡ bỏ trong Php 8.0.s are always converted to strings with the structure
22, where 
23 is the resource number assigned to the resource by PHP at
runtime. While the exact structure of this string should not be relied on and is subject to change, it will always be unique for a given resource within the lifetime of a script being executed (ie a Web request or CLI process) and won't be reused. To get a resource's type, use the get_resource_type() function. 

Chuyển đổi thành chuỗi is always converted to an empty string.

Một giá trị có thể được chuyển đổi thành một chuỗi bằng cách sử dụng hàm

13 hoặc hàm strval (). Chuyển đổi chuỗi được tự động thực hiện trong phạm vi của một biểu thức trong đó cần một chuỗi. Điều này xảy ra khi sử dụng các hàm echo hoặc in hoặc khi một biến được so sánh với một chuỗi. Các phần về loại và loại tung hứng sẽ làm cho các phần sau hơn. Xem thêm hàm setType ().array, object, or resource to a string does not provide any useful information about the value beyond its type. See the functions print_r() and var_dump() for more effective means of inspecting the
contents of these types. 

Giá trị bool

14 được chuyển đổi thành chuỗi 
15. Bool
16 được chuyển đổi thành 
17 (chuỗi trống). Điều này cho phép chuyển đổi qua lại giữa các giá trị bool và chuỗi.strings for permanent storage. This method is called serialization, and is performed by the serialize() function. 

Chi tiết về loại chuỗi

Chuỗi trong PHP được triển khai dưới dạng một mảng byte và số nguyên cho biết độ dài của bộ đệm. Nó không có thông tin về cách các byte đó dịch sang các ký tự, để lại nhiệm vụ đó cho lập trình viên. Không có giới hạn về các giá trị mà chuỗi có thể bao gồm; Cụ thể, các byte có giá trị

25 (nul nul byte)) được cho phép ở bất cứ đâu trong chuỗi (tuy nhiên, một vài chức năng, cho biết trong hướng dẫn này không phải là an toàn nhị phân, có thể gửi các chuỗi cho các thư viện bỏ qua dữ liệu sau khi Nul byte.)string in PHP is implemented as an array of bytes and an integer indicating the length of the
buffer. It has no information about how those bytes translate to characters, leaving that task to the programmer. There are no limitations on the values the string can be composed of; in particular, bytes with value 
25 (“NUL bytes”) are allowed anywhere in the string (however, a few functions, said in this manual not to be “binary safe”, may hand off the strings to libraries that ignore data after a NUL byte.) 

Bản chất này của loại chuỗi giải thích lý do tại sao không có loại BYTE riêng biệt trong các chuỗi PHP - các chuỗi đảm nhận vai trò này. Các chức năng trả về không có dữ liệu văn bản - ví dụ, dữ liệu tùy ý đọc từ ổ cắm mạng - vẫn sẽ trả về chuỗi.

Cho rằng PHP không ra lệnh cho một mã hóa cụ thể cho các chuỗi, người ta có thể tự hỏi làm thế nào các chữ cái được mã hóa. Chẳng hạn, chuỗi

26 tương đương với 
27 (ISO-8859-1), 
28 (Mẫu UTF-8, C), 
29 (Mẫu UTF-8, D) hoặc bất kỳ biểu diễn có thể nào khác? Câu trả lời là chuỗi sẽ được mã hóa theo bất kỳ thời trang nào được mã hóa trong tệp tập lệnh. Do đó, nếu tập lệnh được viết trong ISO-8859-1, chuỗi sẽ được mã hóa trong ISO-8859-1, v.v. Tuy nhiên, điều này không áp dụng nếu Zend Multibyte được bật; Trong trường hợp đó, tập lệnh có thể được viết trong một mã hóa tùy ý (được khai báo rõ ràng hoặc được phát hiện) và sau đó được chuyển đổi thành một mã hóa nội bộ nhất định, sau đó là mã hóa sẽ được sử dụng cho các chuỗi chữ. Lưu ý rằng có một số ràng buộc đối với việc mã hóa tập lệnh (hoặc trên mã hóa nội bộ, nên kích hoạt đa tế bào -1. Tuy nhiên, lưu ý rằng các mã hóa phụ thuộc trạng thái trong đó các giá trị byte giống nhau có thể được sử dụng ở trạng thái dịch chuyển ban đầu và không khởi đầu có thể có vấn đề.

Tất nhiên, để trở nên hữu ích, các chức năng hoạt động trên văn bản có thể phải đưa ra một số giả định về cách chuỗi được mã hóa. Thật không may, có nhiều biến thể về vấn đề này trong suốt các chức năng của PHP:

  • Một số chức năng cho rằng chuỗi được mã hóa trong một số (bất kỳ) mã hóa byte nào, nhưng chúng không cần phải giải thích các byte đó là ký tự cụ thể. Đây là trường hợp của, ví dụ, chuỗi con (), strpos (), strlen () hoặc strcmp (). Một cách khác để nghĩ về các chức năng này là hoạt động trên bộ đệm bộ nhớ, tức là, chúng hoạt động với các byte và độ lệch byte.substr(), strpos(), strlen() or strcmp(). Another way to think of these functions is that operate on memory buffers, i.e., they work with bytes and byte offsets.
  • Các chức năng khác được thông qua mã hóa của chuỗi, có thể chúng cũng cho rằng mặc định nếu không có thông tin nào được đưa ra. Đây là trường hợp của htmlentity () và phần lớn các chức năng trong phần mở rộng MBString.htmlentities() and the majority of the functions in the mbstring extension.
  • Những người khác sử dụng ngôn ngữ hiện tại (xem setlocale ()), nhưng hoạt động byte-by-byte. Đây là trường hợp của strcasecmp (), strtoupper () và ucfirst (). Điều này có nghĩa là chúng chỉ có thể được sử dụng với mã hóa một byte, miễn là mã hóa được khớp với địa phương. Chẳng hạn,
    30 có thể trả về 
    31 nếu locale được đặt chính xác và 
    32 được mã hóa với một byte duy nhất. Nếu nó được mã hóa trong UTF-8, kết quả chính xác sẽ không được trả về và chuỗi kết quả có thể hoặc không được trả về bị hỏng, tùy thuộc vào ngôn ngữ hiện tại.setlocale()), but operate byte-by-byte. This is the case of
    strcasecmp(), strtoupper() and ucfirst(). This means they can be used only with single-byte encodings, as long as the encoding is matched by the locale. For instance 
    30 may return 
    31 if the locale is
    correctly set and 
    32 is encoded with a single byte. If it is encoded in UTF-8, the correct result will not be returned and the resulting string may or may not be returned corrupted, depending on the current locale. 
  • Cuối cùng, họ có thể chỉ cho rằng chuỗi đang sử dụng mã hóa cụ thể, thường là UTF-8. Đây là trường hợp của hầu hết các chức năng trong phần mở rộng INTL và trong phần mở rộng PCRE (trong trường hợp cuối cùng, chỉ khi sử dụng công cụ sửa đổi
    33). Mặc dù điều này là do mục đích đặc biệt của chúng, hàm utf8_decode () giả định mã hóa UTF-8 và hàm utf8_encode () giả định mã hóa ISO-8859-1.utf8_decode() assumes a UTF-8 encoding and the function utf8_encode() assumes an ISO-8859-1
    encoding. 

Cuối cùng, điều này có nghĩa là viết các chương trình chính xác bằng cách sử dụng Unicode phụ thuộc vào việc tránh cẩn thận các chức năng sẽ không hoạt động và rất có thể sẽ làm hỏng dữ liệu và sử dụng thay vào đó các chức năng hoạt động chính xác, thường là từ các phần mở rộng INTL và MBString. Tuy nhiên, sử dụng các chức năng có thể xử lý mã hóa Unicode chỉ là khởi đầu. Bất kể các chức năng mà ngôn ngữ cung cấp, điều cần thiết là phải biết đặc tả Unicode. Chẳng hạn, một chương trình giả định chỉ có chữ hoa và chữ thường đang đưa ra một giả định sai.

John ¶

6 năm trước

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

gtisza tại gmail dot com

10 năm trước

64

65

66

67

68

63

rác tại iglou dot eu ¶

6 năm trước

70

71

72

73

74

75

76

63

Ray.paseur đôi khi sử dụng gmail ¶

3 năm trước

78

79

63

VSOEKDOG tại Gmail Dot Com ¶

3 năm trước

81

82

83

63

VSOEKDOG tại Gmail Dot Com ¶

OG tại Gams Dot tại ¶

85

86

87

88

63

15 năm trước

6 năm trước

90

91

92

93

94

63

Ray.paseur đôi khi sử dụng gmail ¶

3 năm trước

96

97

63

VSOEKDOG tại Gmail Dot Com ¶

OG tại Gams Dot tại ¶

99

00

63

15 năm trước

Sideshowanthony tại googlemail dot com ¶

02

03

04

05

06

07

08

09

10

63

Lelon tại Lelon Dot Net

3 năm trước

12

13

14

15

16

17

18

19

63

VSOEKDOG tại Gmail Dot Com ¶

OG tại Gams Dot tại ¶

21

15 năm trước

OG tại Gams Dot tại ¶

22

23

24

63

15 năm trước

6 năm trước

26

27

28

29

30

31

Ray.paseur đôi khi sử dụng gmail ¶

3 năm trước

32

33

34

35

VSOEKDOG tại Gmail Dot Com ¶

OG tại Gams Dot tại ¶

36

37

63

15 năm trước

Sideshowanthony tại googlemail dot com ¶

39

40

41

42

Lelon tại Lelon Dot Net

18 năm trước

43

44

45

Steve tại MrClay Dot org ¶

3 năm trước

46

47

63

VSOEKDOG tại Gmail Dot Com ¶

OG tại Gams Dot tại ¶

49

50

51

15 năm trước

Sideshowanthony tại googlemail dot com ¶

52

53

54

55

56

57

Lelon tại Lelon Dot Net

18 năm trước

58

59

63