\ e

2011-06-28 45 views
6

意圖是什麼我在想這個轉義序列。 的PHP Manual\e代表「逃離」 好,我GOOGLE了一下,發現約ANSI轉義序列, 我不知道這是否\e是指他們。 e

維基百科:

ANSI轉義序列是嵌入在用來控制格式,顏色,並在視頻文本端子其他輸出選項的文本字符。

但我不能看到這個轉義序列和PHP如何交互。 我不知道是否所有帖子都是正確的。

有人可以談論這個話題並展示例子嗎?

+3

請不要在標題中加標籤。 – SLaks

+0

對不起,已修復,謝謝 – nEAnnam

+0

+1問這個問題。現在我終於知道如何在C中移動光標了。:) – 2011-06-28 19:43:07

回答

8

PHP不僅可以用於Web服務器,如果一個人做這是爲了在命令行中運行(如cake命令,它附帶的CakePHP)PHP腳本

$ php foo.php 

\e可以派上用場:PHP腳本可以在命令行中運行,這樣當你想在終端模擬器中進行顏色和格式化。

你可以在this page找到更多關於這些轉義序列的信息。

+0

謝謝你,那正是我所說的。 – nEAnnam

0

您正在查看正則表達式的手冊(如preg_replace)。所以PHP如何與它們交互的問題很簡單:如果你有一個文本,並且你想查找,替換,匹配一個字符串,那麼一個轉義字符可以像任何其他字符一樣「交互」。

+0

但是在PHP字符串中不能執行ANSI esacpe secuences – nEAnnam

0

有很多逃生。

\b:退格
\n:新行
\r:絕對收益
\e:逃避
諸如此類......

他們都做不同的事情時,他們的輸出。

0

字符\e的序列被用於通過PHP來表示ESC character0x1B在ASCII(和UTF-8和其它兼容ASCII編碼)。有一種方法可以用可打印字符(即\e)代表non-printing characters,因爲使用標準鍵盤編寫這些字符並不容易(更別說在屏幕上閱讀它們)。這些序列通常稱爲「轉義序列」。

要鏈接到只是在說「如果你正在寫一個正則表達式,並希望以匹配ESC字符,你可以使用\e這樣做,其他\...序列同樣表示字符和集的手冊頁難以直接輸入的字符。

如你發現,ESC有許多用途,其中ANSI轉義序列,其被用於修改一個命令行程序的輸出,通常添加的顏色,如\e[...m其中...是一種或多種Select Graphic Rendition codes(搜索對於該頁面上的「SRG」)。這不是特定於PHP的;它是理解這些轉義序列的終端,而不是執行程序。任何在兼容終端中輸出適當字節序列的程序(用任何語言編寫)都會觸發這種行爲。

你可以擊很容易地看到這種行爲,儘量在你的終端運行以下命令:

$ echo -e '\e[31mRED TEXT\e[m' 
$ echo -e '\e[42mGREEN BACKGROUND\e[m' 
$ echo -e '\e[5mBLINKING?\e[m' 

絕大多數終端樣式的第一個命令的輸出爲紅色,並且在綠色背景的第二位。然而,許多終端故意做支持閃爍文本,出於同樣的原因,HTML <blink>標籤一般是不支持的 - 這很煩人:)

不用多說,術語「轉義序列」在許多不同的上下文中使用意味着稍微不同的東西。但一般來說,轉義序列是一些特殊的字符序列,它們具有超出字符本身的特定含義。