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.
Nie umieszczaj znaczników w tytule. – SLaks
Przepraszamy, zostało naprawione, dziękuję – nEAnnam
+1 za zadawanie tego pytania. Teraz w końcu wiem, jak przesunąć kursor w C. :) –