\ e

2011-06-28 53 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>标签一般是不支持的 - 这很烦人:)

不用多说,术语“转义序列”在许多不同的上下文中使用意味着稍微不同的东西。但一般来说,转义序列是一些特殊的字符序列,它们具有超出字符本身的特定含义。