Hướng dẫn to string php - thành chuỗi php
Show
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
PHP viết:Hiển thị trình duyệt:Đếm số từ của chuỗi
PHP viết:Hiển thị trình duyệt:Đếm số từ của chuỗi
PHP viết:Hiển thị trình duyệt:Đếm số từ của 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
PHP viết:Hiển thị trình duyệt:
Đế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
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.
Cú phápMộ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 đơnCá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.456 Double Trích dẫnNế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
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. HeredocCá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ể 23 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: 0Nế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 9Ví dụ #7 Ví dụ hợp lệ, ngay cả khi trước PHP 7.3.0 0Heredocs 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 123Ví dụ trên sẽ xuất ra: 1Cũ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ố 4Có 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 567Đị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 8NowdocNowDocs 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 41. 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 42 Ví dụ trên sẽ xuất ra: 2Cũ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 432 PHP Parse error: Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 45 Ví dụ trên sẽ xuất ra: 3Cũ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 46 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 HeredocNowdoc PHP Parse error: Invalid body indentation level (expecting an indentation level of at least 3) in example.php on line 485 PHP Parse error: Invalid indentation - tabs and spaces cannot be mixed in example.php line 80 Ví dụ trên sẽ xuất ra: 4Cũ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 81) 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 825 PHP Parse error: Invalid indentation - tabs and spaces cannot be mixed in example.php line 84 Ví dụ trên sẽ xuất ra: 5Cũ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 85 Ví dụ trên sẽ xuất ra: 6Cũ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 86 and PHP Parse error: Invalid indentation - tabs and spaces cannot be mixed in example.php line 87. Since PHP Parse error: Invalid indentation - tabs and spaces cannot be mixed in example.php line 86 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 47 immediately follows the PHP Parse error: Invalid indentation - tabs and spaces cannot be mixed in example.php line 86. 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" }35 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:
array(2) { [0] => string(11) "a b c" [1] => string(5) "d e f" }90001 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.
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.
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. 05Ví 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. 06Ví dụ #18 Ví dụ về độ lệch chuỗi bất hợp pháp 7
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ặcarray(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).
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 Các ký tự trong chuỗi có thể được truy cập bằng cách sử dụng 07 hoặcarray(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 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. Bool16 đượ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ỗiChuỗ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:
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 343536373839404142434445464748495051525354555657585960616263gtisza tại gmail dot com ¶ 10 năm trước 646566676863rác tại iglou dot eu ¶ ¶ 6 năm trước 7071727374757663Ray.paseur đôi khi sử dụng gmail ¶ ¶ 3 năm trước 787963VSOEKDOG tại Gmail Dot Com ¶ ¶ 3 năm trước 81828363VSOEKDOG tại Gmail Dot Com ¶ ¶ OG tại Gams Dot tại ¶ 858687886315 năm trước ¶ 6 năm trước 909192939463Ray.paseur đôi khi sử dụng gmail ¶ ¶ 3 năm trước 969763VSOEKDOG tại Gmail Dot Com ¶ ¶ OG tại Gams Dot tại ¶ 99006315 năm trước ¶ Sideshowanthony tại googlemail dot com ¶ 02030405060708091063Lelon tại Lelon Dot Net ¶ 3 năm trước 121314151617181963VSOEKDOG tại Gmail Dot Com ¶ ¶ OG tại Gams Dot tại ¶ 2115 năm trước ¶ OG tại Gams Dot tại ¶ 2223246315 năm trước ¶ 6 năm trước 262728293031Ray.paseur đôi khi sử dụng gmail ¶ ¶ 3 năm trước 32333435VSOEKDOG tại Gmail Dot Com ¶ ¶ OG tại Gams Dot tại ¶ 36376315 năm trước ¶ Sideshowanthony tại googlemail dot com ¶ 39404142Lelon tại Lelon Dot Net ¶ 18 năm trước 434445Steve tại MrClay Dot org ¶ ¶ 3 năm trước 464763VSOEKDOG tại Gmail Dot Com ¶ ¶ OG tại Gams Dot tại ¶ 49505115 năm trước ¶ Sideshowanthony tại googlemail dot com ¶ 525354555657Lelon tại Lelon Dot Net ¶ 18 năm trước 585963 |