2011-06-28 12 views
6

Zastanawiam się nad tą sekwencją ucieczki. PHP Manual mówi, że \e reprezentuje „Escape” Cóż, google i znalazłem go o ANSI Sekwencje, nie wiem, czy to \e odnosi je.Co było intencją e

Z Wikipedii:

sekwencje ANSI ewakuacyjne znaki są osadzone w tekście używane do kontrolowania formatowania, kolor i inne opcje wyjściowe na zaciskach tekstowych wideo.

Ale nie widzę, jak te sekwencje ucieczki i PHP mogą wchodzić w interakcje. Nie wiem, czy wszystkie rzeczy, które posty są poprawne.

Czy ktoś może porozmawiać na ten temat i pokazać przykłady?

+3

Nie umieszczaj znaczników w tytule. – SLaks

+0

Przepraszamy, zostało naprawione, dziękuję – nEAnnam

+0

+1 za zadawanie tego pytania. Teraz w końcu wiem, jak przesunąć kursor w C. :) –

Odpowiedz

8

PHP można używać nie tylko z serwerem WWW; skrypty PHP można uruchomić z wiersza poleceń, tak:

$ php foo.php 

Jeśli ktoś sprawia, że ​​skrypt PHP, które mają za zadanie uruchomić z linii poleceń (np komendy którym statki z CakePHP cake) \e może się przydać kiedy chcesz robić kolory i formatowanie w emulatorach terminali.

Możesz znaleźć więcej informacji na temat tych sekwencji escape na this page.

+0

Dziękuję, o tym właśnie mówiłem. – nEAnnam

0

Przeglądasz instrukcję dla wyrażeń regularnych (np. preg_replace). Pytanie, w jaki sposób PHP może z nimi współdziałać, jest dość proste: jeśli masz tekst i chcesz znaleźć, zamienić, dopasować itp. Ciąg znaków, to znak "escape" może być "wchodzący w interakcję" z każdą inną postacią.

+0

Ale w ciągach PHP nie jest trwały ANSI esacpe secuences – nEAnnam

0

Istnieje wiele ucieczek.

\b: Backspace
\n: nowa linia
\r: hard powrót
\e: uciec
etcetera ...

Wszyscy robić różne rzeczy, gdy są one wyjście.

0

sekwencji znaków \e jest używany przez PHP stanowią ESC character, 0x1B w kodzie ASCII (i UTF-8 oraz inne kodowanie ASCII zgodny). Przydaje się sposób na reprezentowanie non-printing characters z postaciami do wydrukowania (w tym przypadku \ i e), ponieważ pisanie takich znaków za pomocą standardowej klawiatury (nie wspominając o przeczytaniu ich na ekranie) nie jest łatwe. Sekwencje te na ogół nazywane są "sekwencjami ucieczkowymi".

Instrukcja strona łączysz się po prostu mówiąc: „jeśli piszesz wyrażenia regularnego i chcą, aby dopasować się w postać ESC, można użyć \e zrobić. Pozostałe \... sekwencje podobnie przedstawiają postacie i zestawy znaki, które trudno bezpośrednio wprowadzić.

Jak odkryto, ESC ma wiele zastosowań, a wśród nich ANSI sekwencje, które są wykorzystywane do modyfikacji wyjścia programu wiersza polecenia, powszechnie aby dodać kolory, takie jak \e[...m gdzie ... jest jeden lub więcej Select Graphic Rendition codes (search dla "SRG" na tej stronie). Nie jest to specyficzne dla PHP; to terminal, a nie program wykonawczy, rozumie te sekwencje ucieczki. Dowolny program (napisany w dowolnym języku), który wyprowadza odpowiednie sekwencje bajtów w zgodnym terminalu, uruchomi to zachowanie.

Widać to zachowanie łatwo w bash, spróbuj uruchomić następujące polecenia w terminalu:

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

Większość terminali będzie projektować wyjście pierwszego polecenia na czerwono, a drugi w zielonym tle. Jednak wiele terminali celowo zrobić nie wsparcia migający tekst, z tego samego powodu znacznik HTML <blink> jest na ogół nieobsługiwane - to denerwujące :)

trzeba dodawać, że termin „uciec sekwencji” jest używany w wielu różnych kontekstach oznaczać trochę inne rzeczy. Ogólnie rzecz biorąc sekwencja ucieczki jest specjalną sekwencją znaków, która ma określone znaczenie wykraczające poza same znaki.

Powiązane problemy