Las bromas las anécdotas

El trabajo con ANSI por la consola

Del noviembre 20, 2008 · 11:03 дп Alex Snet  -  11 comentarios

¿Si es necesario hacer a menudo програму para la consola? ¿No tan a menudo, sí? He aquí últimamente solamente me ocupo de esto … Por eso ha hecho la clase (ha hecho en realidad todavía hace muchísimo). А вот я последнее время только этим и занимаюсь… Поэтому сделал класс (на самом деле сделал еще очень давно).

Esta clase permite cumplir tales operaciones simples, como la iluminación del texto, la iluminación бэкграунда de la letra o el texto, la instalación del cursor a la posición necesaria, la elección de la consola para la conclusión (1~8) y la recta граб de las teclas presionadas.


¿<? php 
class console 
{ 
    const TARGET_OUTPUT = "php://output"; ; 
    const TARGET_STDOUT = "php://stdout"; ; 
    const TARGET_STDERR = "php://stderr"; ; 
    const TARGET_STDIN = "php://stdin"; ; 
 
    protected static $color = array ( ( 
        ' gray ' => 30, , 
        ' black ' => 30, , 
        ' red ' => 31, , 
        ' green ' => 32, , 
        ' yellow ' => 33, , 
        ' blue ' => 34, , 
        ' magenta ' => 35, , 
        ' cyan ' => 36, , 
        ' white ' => 37, , 
        ' default ' => 39  
    ); 
 
    protected static $bgcolor = array ( ( 
        ' gray ' => 40, , 
        ' black ' => 40, , 
        ' red ' => 41, , 
        ' green ' => 42, , 
        ' yellow ' => 43, , 
        ' blue ' => 44, , 
        ' magenta ' => 45, , 
        ' cyan ' => 46, , 
        ' white ' => 47, , 
        ' default ' => 49, , 
    ); 
 
    protected static $style = array ( ( 
        ' default ' => ' 0 ', , 
 
        ' bold ' => 1, , 
        ' faint ' => 2, , 
        ' normal ' => 22, , 
 
        ' italic ' => 3, , 
        ' notitalic ' => 23, , 
 
        ' underlined ' => 4, , 
        ' doubleunderlined ' => 21, , 
        ' notunderlined ' => 24, , 
 
        ' blink ' => 5, , 
        ' blinkfast ' => 6, , 
        ' noblink ' => 25, , 
 
        ' negative ' => 7, , 
        ' positive ' => 27, , 
    ); 
 
       private $text = "";   ""; 
 
    //Outputing 
    public function draw ($text = ") $text='') 
    { 
        echo $this-> text. $ text; text.$text; 
        $this-> text = ";  = ''; 
        return $this;  
    } 
 
    //Input 
    public function readNumeric () ) 
    { 
        $stdin = fopen (' php://stdin ', ' r '); ('php://stdin', 'r'); 
        $line = trim (fgets ($stdin)); (fgets($stdin)); 
        fscanf ($stdin, "%d\n", $number); , "%d\n", $number); 
          return $number;  
    } 
    public function readString () ) 
    { 
        $stdin = fopen (' php://stdin ', ' r '); ('php://stdin', 'r'); 
        $line = trim (fgets ($stdin)); (fgets($stdin)); 
          fscanf ($stdin, "%s\n", $string); , "%s\n", $string); 
          return $string;  
    } 
 
    //Sound 
    public function beep () {echo "\007"; return $this;} )                            { echo "\007"; return $this; } 
    public function setSoundHerz ($herz=100) {echo "\033 [10; {$herz}]"; return $this;} $herz=100)            { echo "\033[10;{$herz}]"; return $this; } 
    public function setSoundLong ($milliseconds=500) {echo "' 033 [11; {$milliseconds}]"; return $this;} $milliseconds=500)    { echo "'033[11;{$milliseconds}]"; return $this; } 
 
    //Cursor position 
    public function toPos ($row = 1, $column = 1) {echo "\033 [{$row}; {$column} H"; return $this;} $row = 1, $column = 1 )    { echo "\033[{$row};{$column}H"; return $this; }
    public function cursorUp ($lines=1) {echo "\033 [{$lines} A"; return $this;} $lines=1)                { echo "\033[{$lines}A"; return $this; } 
    public function cursorDown ($lines=1) {echo "\033 [{$lines} B"; return $this;} $lines=1)            { echo "\033[{$lines}B"; return $this; } 
    public function cursorRight ($columns=1) {echo "\033 [{$columns} C"; return $this;} $columns=1)            { echo "\033[{$columns}C"; return $this; } 
    public function cursorLeft ($columns=1) {echo "\033 [{$columns} D"; return $this;} $columns=1)            { echo "\033[{$columns}D"; return $this; } 
 
    //Text colors 
    public function setStyle ($style ='default ') {$this-> text. = "\033 [". $this-> style [$style]. "m"; return $this;} $style='default')        { $this->text .= "\033[".$this->style[$style]."m"; return $this; } 
    public function setColor ($color ='default ') {$this-> text. = "\033 [". $this-> color [$style]; return $this;} $color='default')        { $this->text .= "\033[".$this->color[$style]; return $this; } 
    public function setBgColor ($color ='default ') {$this-> text. = "\033 [". $this-> bgcolor [$style]; return $this;} $color='default')    { $this->text .= "\033[".$this->bgcolor[$style]; return $this; } 
 
    //Application 
    public function setAppName ($name = ") {echo" \033] 0; {$name} \007 "; return $this;} $name='')            { echo "\033]0;{$name}\007"; return $this; } 
    public function setTitle ($name = ") {echo" \033] 2; {$name} \007 "; return $this;} $name='')                { echo "\033]2;{$name}\007"; return $this; } 
    public function setIcon ($name = ") {echo" \033] 1; {$name} \007 "; return $this;} $name='')                { echo "\033]1;{$name}\007"; return $this; } 
 
    //Other 
    public function clear () {echo "\033c"; return $this;} )                            { echo "\033c"; return $this; } 
    public function console ($num=1) {echo "\033 [12; {$num}]"; return $this;} $num=1)                    { echo "\033[12;{$num}]"; return $this; } 
} 
?>

Así como bajarlo se puede con phpclasses.org por esta referencia: http://www.phpclasses.org/browse/package/4969.html
Gracias por la atención.

Тэги: , , ,

А todavía escribía sobre:
None Found

11 comentarios → “el Trabajo con ANSI por la consola”


  1. surger

    20 Doliendo, 2008

    Hasta la nostalgia por los terminales ha abierto …
    Спасиба, камрад

    Responder

  2. Alex Snet

    20 Doliendo, 2008

    ¡Siempre es contento ayudar! =)

    Responder

  3. wtask

    16 Puente, 2008

    Gracias, miraremos. Son necesarios periódicamente de consola скриптики.

    Responder

  4. Emilis

    02 Janv, 2009

    ¿Puede ser a usted come el ejemplo como usar esta clase?

    Responder

  5. Alex Snet

    02 Janv, 2009

    Emilis:
    ¿Puede ser a usted come el ejemplo como usar esta clase?

    Sí, sin duda. ¿А que precisamente a Ud es incomprensible?

    Responder

  6. Pepe

    20 Mar, 2009

    Hi

    ¿Do you have an example how to use this class?
    Thanks.
    Pepe

    Responder

  7. Val

    29 Okt, 2009

    Buenos días; ¿а no tratabais de usar esta clase bajo windows?

    Responder

    • Alex Snet

      03 Doliendo, 2009

      No, no probaba. Honestamente, dudo que bajo виндовс irán de consola ASCII las órdenes.

      Responder

      • Val

        03 Doliendo, 2009

        Dudáis correctamente — no trabajan las órdenes de consola de пхп en винде.

        Así, limpiar la pantalla de пхп mí podía solamente por medio de la llamada del método correspondiente de dllины.

        Que es asombroso, en el pitón bajo mismo винду trabaja subprocess.call ([' cmd ', '/c ', ' cls '])

        А en пхп – no existe.

        Responder

        • Alex Snet

          04 Doliendo, 2009

          Val, vosotros таки embrolláis poco. En el código dado no hay llamada de otras aplicaciones. Aquí imprimimos simplemente los símbolos especiales, que cumplen una u otra operación. Здесь мы просто печатаем спецсимволы, которые выполняют ту или иную операцию.
          A propósito de la llamada de las aplicaciones de consola – a php hay muchas variantes como esto se hace. Por ejemplo: exec, shell_exec, system, etc … exec, shell_exec, system, etc…
          Por eso no será completamente posible que con uno orden trabajar, а con otra completamente.

          Responder

  8. Val

    04 Doliendo, 2009

    Alex, he escogido metódicamente todas estas funciones en php y todos los modos de llamar "en simplemente" cls: y command/c cls, y cmd/c cls, e imprimir directamente chr (27), “[H”, chr (27), “[2J” y en general todo.

    No trabajan. E.d. en general — dan a la consola correcto ASCII las órdenes, y puedo observarlos: ← [2J, ♀ ←[2J, ♀

    El Internet me ha afortunado por lo siguiente: “Windows NT does not support ANSI.SYS escape sequences in Win32 Console applications”

    php.exe — es evidente win32 console app, por eso no trabaja.

    La pregunta en, por qué en trabaja python.exe.

    Responder

Dejar la huella.

1 2 3 4 5 6 7 8 9 10