PHP cli linux konsol $ KOLONLARIN ve $ SATıRSAY almak nasıl?

5 Cevap php

Şu anda PHP için yeni bir temiz CLI kitaplık oluşturma yaşıyorum ve ben içeri çalıştığı konsol genişlik / yükseklik anlamaya istiyorum

I bash komut dolar KOLONLARIN veya $ SATıRSAY echo yazarsanız, düzgünce değeri görüntüler ederken, birçok vb $ _ENV, exec ("$ KOLONLARIN echo"), kazma gibi şeyler, ama hiçbir sonuç denedim.

Ne i PHP bu değeri erişmek için ne yapmak gerekiyor?

I istimal sh komut böyle.:

#!/usr/bin/php -q
<?php

require_once('lib.commandline.php');


class HelloWorld extends CommandLineApp {

  public function main($args) {

       echo('O, Hai.');

    }

}

Update Final solution:

public function getScreenSize() { 
      preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output);
      if(sizeof($output) == 3) {
        $this->settings['screen']['width'] = $output[1][0];
        $this->settings['screen']['height'] = $output[2][0];
      }
    }

5 Cevap

Hiçbir ayrıştırma gerektiren başka bir kabuk seçenek tput:

$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')

PHP ncurses_getmaxyx işlevini kullanın.

ncurses_getmaxyx (STDSCR, $Height, $Width)

PREVIOUSLY:

http://php.net/manual/en/function.getenv.php

$cols = getenv('COLUMNS');
$rows = getenv('ROWS');

"Uygun" bir şekilde [(2)] pencere boyutu çekirdeğin fikir almak için TIOCGSIZE ioctl aramak, ya da stty -a komutunu çağırır ve {için sonuçlarını ayrıştırmak için muhtemelen } ve columns

$COLUMNS ve $LINES muhtemelen programa ihraç ediliyor değildir. Sen export LINES COLUMNS app çalıştırmadan önce çalıştırabilir veya bu bilgileri doğrudan alabilirsiniz:

$fp=popen("resize", "r");
$b=stream_get_contents($fp);
preg_match("/COLUMNS=([0-9]+)/", $b, $matches);$columns = $matches[1];
preg_match("/LINES=([0-9]+)/", $b, $matches);$rows = $matches[1];
pclose($fp);

Belki de bu link cevap olabilir, yapmanız ANSI Escape kodları kullanabilirsiniz ki, echo özel Escape kod sırasını kullanarak, özellikle 'Sorgu Cihazı' ile, Ben ayrıntılı olarak açıklıyor başka link here bulundu ki. Belki de bu ekran sütunları ve satırları almak sağlamak olabilir kullanıyor ...

Hope this helps, Best regards, Tom.

Çevre değişkenleri $ _ENV süper global değişken bulunabilir.

echo $_ENV['ROWS'];

Örneğin.