Les taquets les anecdotes

Le travail avec ANSI par la console

De novembre 20, 2008 · 11:03 дп Alex Snet  -  11 commentaires

S'il faut souvent faire програму pour la console ? Non ainsi souvent, oui ? Mais voici je seulement m'occupe le dernier temps de cela … C'est pourquoi a fait la classe (a fait en fait encore il y a bien longtemps). А вот я последнее время только этим и занимаюсь… Поэтому сделал класс (на самом деле сделал еще очень давно).

Cette classe permet d'accomplir telles opérations simples, comme la surbrillance du texte, la surbrillance бэкграунда de la lettre ou le texte, l'installation du curseur sur la position nécessaire, le choix de la console pour la conclusion (1~8) et le charme direct des touches appuyées.


<? 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; } 
} 
?>

Aussi transférer cela on peut avec phpclasses.org selon cette référence : http://www.phpclasses.org/browse/package/4969.html
Merci pour l'attention.

Тэги : , , ,

Mais encore j'écrivais sur :
None Found

11 commentaires → “le Travail avec ANSI par la console”


  1. surger

    20 En geignant, 2008

    Même la nostalgie selon les terminaux a percé …
    Спасиба, камрад

    Répondre

  2. Alex Snet

    20 En geignant, 2008

    Est toujours content d'aider! =)

    Répondre

  3. wtask

    16 Pont, 2008

    Merci, nous regarderons. Sont demandés périodiquement console скриптики.

    Répondre

  4. Emilis

    02 Janv, 2009

    Peut être chez vous mange l'exemple comme utiliser cette classe ?

    Répondre

  5. Alex Snet

    02 Janv, 2009

    Emilis :
    Peut être chez vous mange l'exemple comme utiliser cette classe ?

    Oui, certainement. Mais que notamment il vous est incompréhensible ?

    Répondre

  6. Pepe

    20 Mar, 2009

    Hi

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

    Répondre

  7. Val

    29 Okt, 2009

    Bonjour; mais vous n'essayiez pas d'utiliser cette classe sous windows ?

    Répondre

    • Alex Snet

      03 En geignant, 2009

      Non, n'essayait pas. En disant honnêtement, je doute que sous виндовс ira console ASCII les équipes.

      Répondre

      • Val

        03 En geignant, 2009

        Doutez correctement — les équipes consoles de пхп sur винде ne travaillent pas.

        Ainsi, nettoyer l'écran de пхп moi a pu seulement par voie de l'appel de la méthode correspondante de dllины.

        Qu'est frappant, dans le python sous même винду travaille subprocess.call ([' cmd ', '/c ', ' cls '])

        Mais à пхп – est absent.

        Répondre

        • Alex Snet

          04 En geignant, 2009

          Val, vous таки confondez un peu. Dans le code donné il n'y a pas d'appel des autres applications. Ici nous tapons simplement les symboles spéciaux, qui accomplissent n'importe quelle opération. Здесь мы просто печатаем спецсимволы, которые выполняют ту или иную операцию.
          À propos de l'appel des applications consoles – chez php il y a beaucoup de variantes comme cela se fait. Par exemple : exec, shell_exec, system, etc … exec, shell_exec, system, etc…
          C'est pourquoi ne sera pas tout à fait possible qu'avec un équipe travailler, mais avec l'autre tout à fait.

          Répondre

  8. Val

    04 En geignant, 2009

    Alex, j'ai trié méthodiquement toutes ces fonctions à php et tous les moyens de provoquer "de manière simplement" cls : et command/c cls, et cmd/c cls, et taper directement chr (27), “[H”, chr (27), “[2J” et en général tout.

    Ne travaillent pas. I.e. en général — ils donnent sur la console juste ASCII les équipes, et je peux les observer : ← [2J, ♀ ←[2J, ♀

    Internet a fait le bonheur de moi par le suivant : “Windows NT does not support ANSI.SYS escape sequences in Win32 Console applications”

    php.exe — il est évident win32 console app, c'est pourquoi ne travaille pas.

    La question dans, pourquoi à travaille python.exe.

    Répondre

Laisser la trace.

1 2 3 4 5 6 7 8 9 10