我想知道这个转义序列。PHP 手册说代表“\e
转义” 好吧,我用谷歌搜索了它并找到了关于ANSI Escape Sequences的信息,我不知道这是否\e
指的是它们。
来自维基百科:
ANSI 转义序列是嵌入在文本中的字符,用于控制视频文本终端上的格式、颜色和其他输出选项。
但我看不到这个转义序列和 PHP 是如何交互的。我不知道发布的所有内容是否正确。
有人可以谈论这个话题并展示例子吗?
我想知道这个转义序列。PHP 手册说代表“\e
转义” 好吧,我用谷歌搜索了它并找到了关于ANSI Escape Sequences的信息,我不知道这是否\e
指的是它们。
来自维基百科:
ANSI 转义序列是嵌入在文本中的字符,用于控制视频文本终端上的格式、颜色和其他输出选项。
但我看不到这个转义序列和 PHP 是如何交互的。我不知道发布的所有内容是否正确。
有人可以谈论这个话题并展示例子吗?
PHP 不能只用于 Web 服务器;PHP 脚本可以从命令行运行,如下所示:
$ php foo.php
如果制作一个旨在从命令行运行的 PHP 脚本(例如cake
CakePHP 附带的命令),\e
当您想在终端模拟器中进行颜色和格式化时,它会派上用场。
您可以在此页面上找到有关这些转义序列的更多信息。
\e
PHP 使用ESC
字符序列以 ASCII (0x1B
以及 UTF-8 和其他与 ASCII 兼容的编码)表示字符。有一种方法可以用可打印的字符(即和,在这种情况下)来表示非打印字符是很有帮助的,因为用标准键盘写这样的字符并不容易(更不用说在屏幕上读取它们了)。这些序列通常称为“转义序列”。\
e
您链接到的手册页只是说“如果您正在编写正则表达式并想要匹配ESC
字符,您可以使用它\e
来执行此操作。其他\...
序列类似地表示难以直接输入的字符和字符集.
如您所见,ESC
它有很多用途,其中包括 ANSI 转义序列,用于修改命令行程序的输出,通常用于添加颜色,例如一个或多个Select Graphic Rendition 代码\e[...m
在哪里(搜索“SRG”在该页面上)。这不是 PHP 特有的。理解这些转义序列的是终端,而不是执行程序。在兼容终端中输出适当字节序列的任何程序(以任何语言编写)都将触发此行为。...
您可以在 Bash 中轻松看到此行为,尝试在终端中运行以下命令:
$ echo -e '\e[31mRED TEXT\e[m'
$ echo -e '\e[42mGREEN BACKGROUND\e[m'
$ echo -e '\e[5mBLINKING?\e[m'
大多数终端会将第一个命令的输出设置为红色,第二个命令的输出设置为绿色背景。然而,许多终端故意不支持闪烁文本,出于同样的原因,<blink>
通常不支持 HTML 标签 - 这很烦人 :)
不用说,“转义序列”一词在许多不同的上下文中使用,表示略有不同的事物。但一般来说,转义序列是一些特殊的字符序列,除了字符本身之外还有特定的含义。
您正在查看正则表达式的手册(如preg_replace
)。所以 PHP 如何与它们交互的问题非常简单:如果你有一个文本并且你想查找、替换、匹配等字符串,那么转义字符可以像任何其他字符一样“交互”。
有很多逃脱。
\b
: backspace
\n
: new line
\r
: hard return
\e
: escape
等等...
它们在输出时都会做不同的事情。