首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你的意图是什么?

你的意图是什么?
EN

Stack Overflow用户
提问于 2011-06-28 19:33:38
回答 3查看 4.5K关注 0票数 8

我在想这个逃逸程序。PHP手册\e代表“逃逸”--嗯,我在谷歌上搜索了它,发现了ANSI逃逸序列,我不知道这个\e是否指它们。

维基百科:

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

但我看不出这个转义序列和PHP是如何交互的。我不知道那些帖子是不是都是对的。

有人能谈谈这个话题并举例说明吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-28 19:38:24

PHP不能只用于web服务器;PHP脚本可以从命令行运行,如下所示:

代码语言:javascript
复制
$ php foo.php

如果您创建了一个用于从命令行运行的PHP脚本(例如,随CakePHP附带的cake命令),那么当您想在终端模拟器中执行颜色和格式设置时,\e可以派上用场。

您可以在此页上找到更多关于这些转义序列的信息。

票数 8
EN

Stack Overflow用户

发布于 2016-02-18 23:57:38

\e使用字符序列表示ASCII中的字符0x1B (以及UTF-8和其他与ASCII兼容的编码)。用可打印字符表示非印刷字符 (在本例中是\e )是很有帮助的,因为用标准键盘编写这样的字符并不容易(更不用说在屏幕上读取它们了)。这些序列通常被称为“转义序列”。

链接到的手册页面只是简单地说:“如果您正在编写正则表达式,并且希望与ESC字符匹配,则可以使用\e进行匹配。其他\...序列类似地表示难以直接输入的字符和字符集。

正如您所发现的,ESC有许多用途,其中包括用于修改命令行程序输出的ANSI转义序列,通常用于添加颜色,例如\e[...m,其中...是一个或多个选择图形渲染代码 (在该页面上搜索"SRG“)。这并不是PHP特有的;理解这些转义序列的不是执行程序,而是终端。在兼容终端中输出适当字节序列的任何程序(用任何语言编写)都会触发这种行为。

在Bash中可以轻松地看到这种行为,请尝试在您的终端中运行以下命令:

代码语言:javascript
复制
$ echo -e '\e[31mRED TEXT\e[m'
$ echo -e '\e[42mGREEN BACKGROUND\e[m'
$ echo -e '\e[5mBLINKING?\e[m'

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

不用说,“逃逸序列”一词在许多不同的上下文中被使用,其含义略有不同。但一般说来,转义序列是一种特殊的字符序列,它不仅具有字符本身的特殊意义,还具有特定的意义。

票数 2
EN

Stack Overflow用户

发布于 2011-06-28 19:37:49

有很多逃跑的事。

\b:backspace

\n:新线路

\r:艰难的回归

\e:逃逸

等等..。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6512104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档