Каково намерение \ е - PullRequest
       32

Каково намерение \ е

6 голосов
/ 28 июня 2011

Мне было интересно об этой побег последовательности. PHP Manual гласит, что \e означает «побег» Ну, я прогуглил его и нашел около ANSI Escape Sequence , я не знаю, относится ли это \e к ним.

Из Википедии:

Экранирующие последовательности ANSI - это символы, встроенные в текст, используемые для управления форматированием, цветом и другими параметрами вывода на видеотекстовых терминалах.

Но я не вижу, как эти escape-последовательности и PHP могут взаимодействовать. Я не знаю, правильны ли все эти посты.

Может кто-нибудь поговорить на эту тему и показать примеры?

Ответы [ 4 ]

8 голосов
/ 28 июня 2011

PHP не может использоваться только с веб-сервером;Сценарии PHP могут запускаться из командной строки, например:

$ php foo.php

Если кто-то создает сценарий PHP, предназначенный для запуска из командной строки (например, команда cake, поставляемая с CakePHP), \e может пригодиться, если вы хотите выполнять цвета и форматирование в эмуляторах терминала.

Подробнее об этих escape-последовательностях вы можете узнать на этой странице .

0 голосов
/ 19 февраля 2016

Последовательность символов \e используется PHP для представления символов ESC , 0x1B в ASCII (и UTF-8 и других ASCII-совместимых кодировках).Полезно иметь способ представлять непечатаемых символов печатными символами (в данном случае \ и e), потому что такие символы нелегко писать с помощью стандартной клавиатуры (не говоря уже очитать их на экране).Эти последовательности обычно называются «escape-последовательностями».

На странице руководства, на которую вы ссылаетесь, просто говорится «если вы пишете регулярное выражение и хотите найти совпадение с символом ESC, вы можете использовать \e, чтобы сделать это. Другие \... последовательности аналогичным образом представляют символы и наборы символов, которые трудно непосредственно ввести.

Как вы обнаружили, ESC имеет много применений, среди них escape-последовательности ANSI, которыеиспользуются для изменения вывода программы командной строки, обычно для добавления цветов, таких как \e[...m, где ... - это один или несколько Выберите коды графической передачи (найдите «SRG» на этой страницеЭто не относится к PHP, это терминал, а не исполняющая программа, которая понимает эти escape-последовательности. Любая программа (написанная на любом языке), которая выводит соответствующие последовательности байтов в совместимом терминале, будет запускать это поведение.

Вы можете легко увидеть это поведение в Bash, попробуйте выполнить следующие команды в своем терминале:

$ echo -e '\e[31mRED TEXT\e[m'
$ echo -e '\e[42mGREEN BACKGROUND\e[m'
$ echo -e '\e[5mBLINKING?\e[m'

Большинство терминалов будут отображать вывод первой команды красным, а второй - зеленым фоном.Однако многие терминалы намеренно не поддерживают мигающий текст, по той же причине, что тег HTML <blink> обычно не поддерживается - это раздражает:)

Само собой разумеется, термин «escape-последовательность»используется в нескольких различных контекстах, чтобы означать немного разные вещи.Но в общем случае escape-последовательность - это какая-то особая последовательность символов, которая имеет специфическое значение, выходящее за рамки только самих символов.

0 голосов
/ 28 июня 2011

Есть много выходов.

\b: возврат на одну позицию
\n: новая строка
\r: принудительное возвращение
\e: побег
и так далее...

Они все делают разные вещи, когда выводятся.

0 голосов
/ 28 июня 2011

Вы смотрите руководство для регулярных выражений (например, preg_replace).Таким образом, вопрос о том, как PHP может взаимодействовать с ними, довольно прост: если у вас есть текст, и вы хотите найти, заменить, сопоставить и т. Д. Строку, то с «escape-символом» можно «взаимодействовать», как и с любым другим символом.

...