我想知道这个逃脱序列。
PHP Manual表示\e
表示“逃避”
好吧,我用Google搜索了一下,发现了 ANSI Escape Sequences ,
我不知道这个\e
是否引用了它们。
来自维基百科:
ANSI转义序列是用于控制视频文本终端上的格式,颜色和其他输出选项的文本中嵌入的字符。
但是我无法看到这个转义序列和PHP如何交互。 我不知道发布的所有内容是否正确。
有人可以谈论这个话题并展示示例吗?
答案 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
character,0x1B
(以及UTF-8和其他与ASCII兼容的编码)。有一种方法可以用可打印字符表示non-printing characters(在本例中为\
和e
)因为用标准键盘编写这些字符并不容易(更不用说了)他们在屏幕上)。这些序列通常称为“逃逸序列”。
您要链接的手册页只是说“如果您正在编写正则表达式并希望匹配ESC
字符,则可以使用\e
来执行此操作。另一个{ {1}}序列类似地表示难以直接输入的字符和字符集。
正如您所发现的,\...
有许多用途,其中包括ANSI转义序列,用于修改命令行程序的输出,通常用于添加颜色,例如ESC
其中{ {1}}是一个或多个Select Graphic Rendition codes(在该页面上搜索“SRG”)。这不是PHP特有的;理解这些转义序列是终端,而不是执行程序。任何在兼容终端中输出适当字节序列的程序(用任何语言编写)都会触发此行为。
您可以在Bash中轻松看到此行为,尝试在终端中运行以下命令:
\e[...m
大多数终端将第一个命令的输出设置为红色,第二个命令输出为绿色背景。然而,许多终端故意不支持闪烁文本,出于同样的原因,HTML ...
标记通常不受支持 - 这很烦人:)
不用说,术语“转义序列”在许多不同的上下文中用于表示稍微不同的事物。但一般来说,转义序列是一些特殊的字符序列,除了字符本身之外还具有特定的含义。