Hướng dẫn what is the escape character in php? - ký tự thoát trong php là gì?

bởi Vincy. Sửa đổi lần cuối vào ngày 9 tháng 7 năm 2022.

Trình tự thoát được sử dụng để thoát một ký tự trong quá trình phân tích chuỗi. Nó cũng được sử dụng để đưa ra ý nghĩa đặc biệt để đại diện cho các lần phá vỡ đường dây, tab, cảnh báo và nhiều hơn nữa.

Các chuỗi thoát được nội suy thành các chuỗi được bao quanh bởi các trích dẫn kép hoặc cú pháp HEREDOC. Nếu một chuỗi nằm trong các trích dẫn đơn hoặc trong nowDocs, thì chuỗi thoát sẽ không hoạt động để có được kết quả dự kiến. Trong một hướng dẫn trước đây, chúng tôi đã thấy nội suy biến.

Trình tự thoát được bắt đầu với dấu gạch chéo ngược ký tự (\), theo sau là nhân vật có thể là một chữ số hoặc một nhân vật đặc biệt. Nếu đó là một ký tự chữ và số, nó mang lại ý nghĩa đặc biệt để thể hiện dòng phá vỡ \ n, vận chuyển trở lại \ r và hơn thế nữa.

Nếu đó là một nhân vật đặc biệt, thì nó sẽ được xem xét như trong quá trình phân tích cú pháp chuỗi. Ví dụ: nếu chúng ta nội suy \ $ var & nbsp; thành một chuỗi thì nó sẽ là & nbsp; được thực hiện AS & nbsp; $ var. Không có ký tự thoát (\), & nbsp; biến $ var php được phân tích cú pháp để có được giá trị của nó.

Ví dụ trình tự thoát

Mã này cho thấy một chương trình ví dụ PHP đơn giản để phân biệt hành vi của các chuỗi thoát với các ký tự chữ và số không ký sinh và không phải là ký tự.

Trong ví dụ này, tôi đã sử dụng chuỗi Escape \ n để thêm một đường ngắt dòng sau nhãn và tôi đã sử dụng \ để thoát \ ký tự và in nó vào trình duyệt.


Các chuỗi thoát được sử dụng rộng rãi trong PHP

Trong phần này, tôi đã liệt kê một số chuỗi thoát được sử dụng rộng rãi và mô tả cách chúng được sử dụng để thoát khỏi nhân vật đặc biệt hoặc để tạo ý nghĩa bằng cách kết hợp chúng với một số ký tự chữ và số.

  • \--để thoát ‘trong chuỗi được trích xuất đơn.
  • \--để thoát khỏi nhóm trong chuỗi được trích xuất kép.
  • \\ - để thoát khỏi dấu gạch chéo ngược.
  • \ $ - để thoát $.
  • \ n - để thêm các đứt đường giữa các chuỗi.
  • \ T - để thêm không gian tab.
  • \ r - để trở về vận chuyển.

Trở lại đầu

Trình tự thoát mà chúng chủ yếu được sử dụng để đặt các ký tự không thể in vào chữ ký tự và chuỗi. Ví dụ: bạn có thể sử dụng các chuỗi thoát để đặt các ký tự như tab, return vận chuyển và backspace vào một luồng đầu ra.

Ký tự dấu gạch chéo ngược có một số cách sử dụng. Thứ nhất, nếu nó được theo sau bởi một nhân vật không phải là một nhân vật không đồngumeric, nó sẽ lấy đi bất kỳ ý nghĩa đặc biệt nào mà nhân vật có thể có. Việc sử dụng dấu gạch chéo ngược này như một ký tự thoát hiểm áp dụng cả hai lớp ký tự bên trong và bên ngoài.

Ví dụ: nếu bạn muốn khớp một ký tự "*", bạn sẽ viết "\*" trong mẫu. Điều này áp dụng cho dù nhân vật sau đây có được hiểu là một nhân vật tổng hợp hay không, do đó, luôn luôn an toàn khi đi trước một người không phải là vô cảm với "\" để chỉ định rằng nó là tự đứng. Cụ thể, nếu bạn muốn kết hợp một dấu gạch chéo ngược, bạn viết "\\".:

Ghi chú:

Các chuỗi PHP được trích dẫn đơn và kép có ý nghĩa đặc biệt của dấu gạch chéo ngược. Do đó, nếu \ phải được khớp với biểu thức chính quy \\, thì "\\\\\" hoặc '\\\\\\' phải được sử dụng trong mã PHP.

Nếu một mẫu được biên dịch với tùy chọn PCRE_EXTENDS, thì khoảng trắng trong mẫu (trừ trong một lớp ký tự) và các ký tự giữa "#" bên ngoài một lớp ký tự và ký tự dòng tiếp theo sẽ bị bỏ qua. Một dấu gạch chéo ngược có thể được sử dụng để bao gồm một khoảng trắng hoặc ký tự "#" như một phần của mẫu.

Việc sử dụng thứ hai của dấu gạch chéo ngược cung cấp một cách mã hóa các ký tự không in theo các mẫu theo cách có thể nhìn thấy. Không có hạn chế về sự xuất hiện của các ký tự không in, ngoài số 0 nhị phân kết thúc một mẫu, nhưng khi một mẫu được chuẩn bị bằng cách chỉnh sửa văn bản, thường dễ sử dụng một trong các chuỗi thoát sau hơn so với ký tự nhị phân nó đại diện:alarm, that is, the BEL character (hex 07) \cx "control-x", where x is any character \e escape (hex 1B) \f formfeed (hex 0C) \n newline (hex 0A) \p{xx} a character with the xx property, see unicode properties for more info \P{xx} a character without the xx property, see unicode properties for more info \r carriage return (hex 0D) \R line break: matches \n, \r and \r\n \t tab (hex 09) \xhh character with hex code hh \ddd character with octal code ddd, or backreference

\ Một báo động, nghĩa là ký tự bel (hex 07) \ cx "control-x", trong đó x là bất kỳ ký tự nào \ e thoát (hex 1b) \ f formfeed (hex 0c) {xx} Một ký tự có thuộc tính XX, xem các thuộc tính unicode để biết thêm thông tin \ p {xx} Một ký tự không có thuộc tính XX, xem các thuộc tính Unicode để biết thêm thông tin .

Hiệu ứng chính xác của "\cx" như sau: nếu "x" là một chữ cái thường, nó được chuyển đổi thành trường hợp trên. Sau đó, bit 6 của nhân vật (Hex 40) bị đảo ngược. Do đó, "\cz" trở thành hex 1a, nhưng "\c{" trở thành hex 3b, trong khi "\c;" trở thành hex 7b.

Sau "\x", tối đa hai chữ số thập lục phân được đọc (chữ cái có thể ở trên hoặc chữ thường). Trong chế độ UTF-8, "\x{...}" được cho phép, trong đó nội dung của niềng răng là một chuỗi các chữ số thập lục phân. Nó được hiểu là một ký tự UTF-8 có số mã là số thập lục phân đã cho. Trình tự thoát thập lục phân ban đầu, \xhh, khớp với ký tự UTF-8 hai byte nếu giá trị lớn hơn 127.

Sau khi "\0" lên đến hai chữ số bát phân tiếp theo được đọc. Trong cả hai trường hợp, nếu có ít hơn hai chữ số, chỉ có những chữ số có mặt được sử dụng. Do đó, trình tự "\cx0" chỉ định hai số không nhị phân theo sau là một ký tự bel. Hãy chắc chắn rằng bạn cung cấp hai chữ số sau 0 ban đầu nếu ký tự theo sau là một chữ số bát phân.

Bên trong một lớp ký tự, hoặc nếu số thập phân lớn hơn 9 và không có nhiều người bắt giữ, pcre đọc lại tối đa ba chữ số octal sau dấu gạch chéo ngược và tạo ra một byte duy nhất từ ​​8 bit có ý nghĩa nhất của giá trị. Bất kỳ chữ số nào tiếp theo đều đứng cho mình. Ví dụ:

\ 040 là một cách khác để viết một không gian \ 40 là như nhau, với điều kiện có ít hơn 40 tiểu trình trước đó \ 7 luôn là một tham chiếu trở lại \ 11 có thể là một tài liệu tham khảo lại hoặc một cách khác để viết tab \ 011 luôn luôn là Tab \ 0113 là một tab theo sau là ký tự "3" \ 113 là ký tự có mã octal 113 (vì không thể có quá 99 tài liệu tham khảo trở lại) \ 377 là một byte bao gồm hoàn toàn 1 bit \ 81 là một Tài liệu tham khảo trở lại, hoặc một số 0 nhị phân theo sau là hai ký tự "8" và "1"is another way of writing a space \40 is the same, provided there are fewer than 40 previous capturing subpatterns \7 is always a back reference \11 might be a back reference, or another way of writing a tab \011 is always a tab \0113 is a tab followed by the character "3" \113 is the character with octal code 113 (since there can be no more than 99 back references) \377 is a byte consisting entirely of 1 bits \81 is either a back reference, or a binary zero followed by the two characters "8" and "1"

Lưu ý rằng các giá trị octal từ 100 trở lên không được giới thiệu bởi số 0 hàng đầu, bởi vì không có quá ba chữ số bát phân đã từng được đọc.

Tất cả các chuỗi xác định một giá trị byte duy nhất có thể được sử dụng cả các lớp ký tự bên trong và bên ngoài. Ngoài ra, bên trong một lớp ký tự, chuỗi "\cx1" được hiểu là ký tự backspace (Hex 08). Bên ngoài một lớp nhân vật, nó có một ý nghĩa khác nhau (xem bên dưới).

Việc sử dụng thứ ba của dấu gạch chéo ngược là để chỉ định các loại ký tự chung:

\ d bất kỳ chữ số thập phân nào \ d bất kỳ ký tự nào không phải là chữ số thập phân ký tự khoảng trắng dọc \ v bất kỳ ký tự nào không phải là ký tự khoảng trắng dọcany decimal digit \D any character that is not a decimal digit \h any horizontal whitespace character \H any character that is not a horizontal whitespace character \s any whitespace character \S any character that is not a whitespace character \v any vertical whitespace character \V any character that is not a vertical whitespace character \w any "word" character \W any "non-word" character

Mỗi cặp chuỗi thoát hiểm phân vùng hoàn chỉnh của các ký tự thành hai bộ phân tách. Bất kỳ ký tự nhất định đều khớp với một, và chỉ một, của mỗi cặp.

Các ký tự "khoảng trắng" là HT (9), LF (10), FF (12), CR (13) và không gian (32). Tuy nhiên, nếu sự kết hợp cụ thể của ngôn ngữ đang diễn ra, các ký tự có điểm mã trong phạm vi 128-255 cũng có thể được coi là ký tự khoảng trắng, ví dụ, NBSP (A0).

Một ký tự "từ" là bất kỳ chữ cái hoặc chữ số nào hoặc ký tự dấu gạch dưới, nghĩa là bất kỳ ký tự nào có thể là một phần của "từ" perl. Định nghĩa về các chữ cái và chữ số được kiểm soát bởi các bảng ký tự của PCRE và có thể thay đổi nếu kết hợp phù hợp cụ thể của ngôn ngữ đang diễn ra. Ví dụ, trong ngôn ngữ "FR" (tiếng Pháp), một số mã ký tự lớn hơn 128 được sử dụng cho các chữ cái có dấu và chúng được khớp với \cx2.

Các chuỗi loại ký tự này có thể xuất hiện cả hai lớp ký tự bên trong và bên ngoài. Mỗi người khớp một ký tự của loại thích hợp. Nếu điểm khớp hiện tại ở cuối chuỗi chủ đề, tất cả đều thất bại, vì không có ký tự để khớp.

Việc sử dụng thứ tư của dấu gạch chéo ngược là cho một số khẳng định đơn giản. Một xác nhận chỉ định một điều kiện phải được đáp ứng tại một điểm cụ thể trong một trận đấu, mà không tiêu thụ bất kỳ ký tự nào từ chuỗi chủ đề. Việc sử dụng các mẫu đơn cho các khẳng định phức tạp hơn được mô tả dưới đây. Các khẳng định chộp lại là

\ B Boundary \ B không phải là một từ ranh giới \ Bắt đầu của chủ đề (không phụ thuộc vào chế độ đa dòng) \ z cuối của chủ đề hoặc dòng mới ở cuối (không phụ thuộc vào chế độ đa dòng) Vị trí phù hợp trong chủ đềword boundary \B not a word boundary \A start of subject (independent of multiline mode) \Z end of subject or newline at end (independent of multiline mode) \z end of subject (independent of multiline mode) \G first matching position in subject

Những xác nhận này có thể không xuất hiện trong các lớp ký tự (nhưng lưu ý rằng "\cx1" có một ý nghĩa khác, cụ thể là ký tự backspace, bên trong một lớp ký tự).

Ranh giới từ là một vị trí trong chuỗi chủ thể trong đó ký tự hiện tại và ký tự trước không khớp với \cx2 hoặc \cx5 (tức là một khớp nối ký tự phù hợp với \cx2, tương ứng.

Các xác nhận \cx9, x0 và x1 khác với chu vi và đô la truyền thống (được mô tả trong các neo) ở chỗ chúng chỉ khớp ngay khi bắt đầu và kết thúc chuỗi chủ đề, bất kỳ tùy chọn nào được đặt. Chúng không bị ảnh hưởng bởi các tùy chọn pcre_multiline hoặc pcre_dollar_endonly. Sự khác biệt giữa x0 và x1 là x0 phù hợp trước một dòng mới là ký tự cuối cùng của chuỗi cũng như ở cuối chuỗi, trong khi x1 chỉ khớp với cuối.

Khẳng định x6 chỉ đúng khi vị trí khớp hiện tại ở điểm bắt đầu của trận đấu, như được chỉ định bởi đối số x7 của preg_match (). Nó khác với \cx9 khi giá trị của x7 không khác.preg_match(). It differs from \cx9 when the value of x7 is non-zero.

\cz0 và \cz1 có thể được sử dụng để bỏ qua các metacharacters regexp trong mẫu. Ví dụ: \cz2 sẽ khớp với một hoặc nhiều ký tự từ, theo sau là chữ \cz3 và neo ở cuối chuỗi. Lưu ý rằng điều này không thay đổi hành vi của các phân định; Ví dụ, mẫu \cz4 không hợp lệ, bởi vì \cz5 thứ hai đánh dấu sự kết thúc của mẫu và \cz6 được hiểu là các sửa đổi không hợp lệ.

\cz7 có thể được sử dụng để thiết lập lại bắt đầu trận đấu. Ví dụ: mẫu \cz8 khớp với "foobar", nhưng báo cáo rằng nó đã khớp với "thanh". Việc sử dụng \cz7 không can thiệp vào cài đặt của các chuỗi con bị bắt. Ví dụ: khi mẫu \c{0 khớp với "foobar", chuỗi con đầu tiên vẫn được đặt thành "foo".

Ẩn danh ¶

3 năm trước

\c{1

\c{2

\c{3

\c{4

Mike tại Eastghost Dot Com ¶

10 năm trước

\c{5

\c{6

\c{7

\c{8

\c{4

Dây ¶

4 năm trước

\c;0

\c;1

\c;2

\c;3

\c;4

\c;5

\c;6

\c;7

\c;8

\c;6

\x0

\x1

Grigor tại miền Gatchev.info ¶

11 năm trước

\x2

Dây ¶

4 năm trước

\x3

\x4

\c;1

\c;2

\c;3

\c;4

\c;5

\x{...}0

\x{...}1

\c;6

\x{...}3

\x{...}4

Grigor tại miền Gatchev.info ¶

11 năm trước

\x{...}5

\x{...}6

\c{4

Thông tin tại Maisuma Dot JP ¶

11 năm trước

\x{...}8

\x{...}9

\c{4

Thông tin tại Maisuma Dot JP ¶

8 năm trước

\xhh1

bluemoehre tại gmx dot de ¶

Lỗi17191 tại Gmail Dot Com ¶

\xhh2

\xhh3

\xhh4

\xhh5

\xhh6

\c{4

7 năm trước

vea dot git tại gmail dot com ¶

\xhh8

Nhân vật thoát là gì?

\ r là một nhân vật trở lại vận chuyển;Nó nói với trình giả lập thiết bị đầu cuối của bạn để di chuyển con trỏ ở đầu dòng.Con trỏ là vị trí mà các nhân vật tiếp theo sẽ được hiển thị.carriage return character; it tells your terminal emulator to move the cursor at the start of the line. The cursor is the position where the next characters will be rendered.

Những nhân vật nào nên được trốn thoát trong PHP?

Các chuỗi thoát được sử dụng rộng rãi trong PHP..
\ '-để thoát' trong chuỗi được trích xuất đơn ..
\-để thoát khỏi nhóm trong chuỗi được trích xuất kép ..
\\ - để thoát khỏi dấu gạch chéo ngược ..
\ $ - để thoát khỏi $ ..
\ n - để thêm các đứt đường giữa các chuỗi ..
\ t - để thêm không gian tab ..
\ r - để trở về vận chuyển ..

Một nhân vật trốn thoát đưa ra một ví dụ là gì?

Trình tự thoát mà chúng chủ yếu được sử dụng để đặt các ký tự không thể in vào chữ ký tự và chuỗi.Ví dụ: bạn có thể sử dụng các chuỗi thoát để đặt các ký tự như tab, return vận chuyển và backspace vào một luồng đầu ra.primarily used to put nonprintable characters in character and string literals. For example, you can use escape sequences to put such characters as tab, carriage return, and backspace into an output stream.