2011-06-28 53 views
6

Tôi đã tự hỏi về chuỗi thoát này. Các PHP Manual nói rằng \e đại diện cho "thoát" Vâng, tôi đã googled nó và tìm thấy khoảng ANSI thoát Sequences, tôi không biết nếu \e này ám chỉ họ.Mục đích của e

Từ Wikipedia:

chuỗi ANSI thoát là những nhân vật nhúng trong văn bản dùng để điều khiển định dạng, màu sắc, và các tùy chọn đầu ra khác trên thiết bị đầu cuối văn bản video.

Nhưng tôi không thể thấy cách trình tự thoát này và PHP có thể tương tác. Tôi không biết nếu tất cả những điều mà bài viết là chính xác.

Ai đó có thể nói về chủ đề này và hiển thị các ví dụ?

+3

Vui lòng không đặt thẻ trong tiêu đề. – SLaks

+0

Xin lỗi, đã được sửa, cảm ơn bạn – nEAnnam

+0

+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. :) –

Trả lời

8

PHP không chỉ được sử dụng với máy chủ web; kịch bản PHP có thể chạy từ dòng lệnh, như thế này:

$ php foo.php 

Nếu một làm cho một kịch bản PHP mà có nghĩa là để chạy từ dòng lệnh (ví dụ lệnh cake mà tàu với CakePHP), \e có thể có ích khi bạn muốn làm màu sắc và định dạng trong trình giả lập thiết bị đầu cuối.

Bạn có thể tìm hiểu thêm về các trình tự thoát này trên this page.

+0

Cảm ơn bạn, đó là những gì tôi đã nói về. – nEAnnam

0

Bạn đang xem hướng dẫn sử dụng cho cụm từ thông dụng (như preg_replace). Vì vậy, câu hỏi làm thế nào PHP có thể tương tác với họ khá đơn giản: nếu bạn có một văn bản và bạn muốn tìm, thay thế, kết hợp v.v ... thì một ký tự thoát có thể được "tương tác" với bất kỳ ký tự nào khác.

+0

Nhưng trong chuỗi PHP không được phép ANSI esacpe secuences – nEAnnam

0

Có nhiều lần thoát.

\b: BackSpace
\n: dòng mới
\r: cứng trở lại
\e: thoát
etcetera ...

Tất cả họ đều làm những việc khác nhau khi họ đang có đầu ra.

0

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à \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ự.

Các vấn đề liên quan