\ e的目的是什么?

时间:2011-06-28 19:33:39

标签: php regex ansi-escape

我想知道这个逃脱序列。 PHP Manual表示\e表示“逃避” 好吧,我用Google搜索了一下,发现了 ANSI Escape Sequences , 我不知道这个\e是否引用了它们。

来自维基百科:

  

ANSI转义序列是用于控制视频文本终端上的格式,颜色和其他输出选项的文本中嵌入的字符。

但是我无法看到这个转义序列和PHP如何交互。 我不知道发布的所有内容是否正确。

有人可以谈论这个话题并展示示例吗?

4 个答案:

答案 0 :(得分:8)

PHP不仅可以与Web服务器一起使用; PHP脚本可以从命令行运行,如下所示:

$ php foo.php

如果一个PHP脚本是从命令行运行的(例如CakePHP附带的cake命令),当您想要进行颜色和格式化时,\e可以派上用场在终端模拟器中。

您可以在this page上找到有关这些转义序列的更多信息。

答案 1 :(得分:0)

您正在查看正则表达式的手册(如preg_replace)。因此,PHP如何与它们进行交互的问题非常简单:如果你有一个文本,并且想要查找,替换,匹配等一个字符串,那么转义字符可以像任何其他字符一样“交互”。

答案 2 :(得分:0)

有很多逃脱。

\b:退格 \n:新行
\r:艰难回报
\e:逃避 诸如此类...

输出时,它们都会做不同的事情。

答案 3 :(得分:0)

PHP使用字符序列\e来表示ASCII中的ESC character0x1B(以及UTF-8和其他与ASCII兼容的编码)。有一种方法可以用可打印字符表示non-printing characters(在本例中为\e)因为用标准键盘编写这些字符并不容易(更不用说了)他们在屏幕上)。这些序列通常称为“逃逸序列”。

您要链接的手册页只是说“如果您正在编写正则表达式并希望匹配ESC字符,则可以使用\e来执行此操作。另一个{ {1}}序列类似地表示难以直接输入的字符和字符集。

正如您所发现的,\...有许多用途,其中包括ANSI转义序列,用于修改命令行程序的输出,通常用于添加颜色,例如ESC其中{ {1}}是一个或多个Select Graphic Rendition codes(在该页面上搜索“SRG”)。这不是PHP特有的;理解这些转义序列是终端,而不是执行程序。任何在兼容终端中输出适当字节序列的程序(用任何语言编写)都会触发此行为。

您可以在Bash中轻松看到此行为,尝试在终端中运行以下命令:

\e[...m

大多数终端将第一个命令的输出设置为红色,第二个命令输出为绿色背景。然而,许多终端故意支持闪烁文本,出于同样的原因,HTML ...标记通常不受支持 - 这很烦人:)

不用说,术语“转义序列”在许多不同的上下文中用于表示稍微不同的事物。但一般来说,转义序列是一些特殊的字符序列,除了字符本身之外还具有特定的含义。