Chuỗi ký tự \e
được PHP sử dụng để đại diện cho ESC
character, 0x1B
bằng ASCII (và UTF-8 và các mã hóa tương thích ASCII khác). Sẽ hữu ích nếu bạn có một cách để biểu diễn non-printing characters với các ký tự có thể in (cụ thể là \
và e
, trong trường hợp này) vì không dễ dàng viết các ký tự đó bằng bàn phím tiêu chuẩn (không đọc chúng trên màn hình). Những chuỗi này thường được gọi là "chuỗi thoát".
Các trang hướng dẫn bạn đang liên kết để chỉ đơn giản là nói "nếu bạn đang viết một biểu thức chính quy và muốn để phù hợp theo tính chất ESC
, bạn có thể sử dụng \e
để làm như vậy. Các \...
chuỗi khác tương tự đại diện cho nhân vật và bộ các ký tự khó nhập trực tiếp.
Như bạn khám phá, ESC
có nhiều công dụng, trong đó ANSI thoát khỏi chuỗi, được sử dụng để thay đổi kết quả của một chương trình dòng lệnh, thường để thêm màu sắc, chẳng hạn như \e[...m
nơi ...
là một hoặc nhiều Select Graphic Rendition codes (tìm kiếm cho "SRG" trên trang đó). Điều này không dành riêng cho PHP; nó là thiết bị đầu cuối, không phải là chương trình thực thi, mà hiểu được các trình tự thoát này. Bất kỳ chương trình nào (được viết bằng bất kỳ ngôn ngữ nào) sẽ xuất ra các chuỗi byte thích hợp trong một thiết bị đầu cuối tương thích sẽ kích hoạt hành vi này.
Bạn có thể thấy hành vi này một cách dễ dàng trong Bash, hãy thử chạy các lệnh sau trong terminal của bạn:
$ echo -e '\e[31mRED TEXT\e[m'
$ echo -e '\e[42mGREEN BACKGROUND\e[m'
$ echo -e '\e[5mBLINKING?\e[m'
Hầu hết các thiết bị đầu cuối sẽ tạo kiểu cho đầu ra của lệnh đầu tiên trong màu đỏ, và lần thứ hai trong một nền màu xanh lá cây. Tuy nhiên nhiều thiết bị đầu cuối cố ý làm không hỗ trợ văn bản nhấp nháy, với cùng lý do thẻ HTML <blink>
nói chung là không được hỗ trợ - đó là gây phiền nhiễu :)
Không cần phải nói, thuật ngữ "thoát khỏi chuỗi" được sử dụng trong một số hoàn cảnh khác nhau có nghĩa là những thứ hơi khác một chút. Nhưng nhìn chung, chuỗi ký tự thoát là một chuỗi ký tự đặc biệt có ý nghĩa cụ thể ngoài chỉ các ký tự.
Vui lòng không đặt thẻ trong tiêu đề. – SLaks
Xin lỗi, đã được sửa, cảm ơn bạn – nEAnnam
+1 để đặt câu hỏi này. Bây giờ tôi cuối cùng đã biết làm thế nào để di chuyển con trỏ trong C. :) –