Я в настоящее время создаю новую аккуратную библиотеку CLI для PHP, и я хотел бы выяснить ширину/высоту консоли, в которой это работает.
Я попробовал много вещей как рытье через $ _ENV, должностное лицо ("$COLUMNS эха"), и т.д., но никакой результат, в то время как, если я ввожу $COLUMNS эха или $ROWS в командной строке удара, это аккуратно отображает значение.
Что я должен сделать для доступа к этому значению от PHP?
Я использую .sh сценарии как это:
#!/usr/bin/php -q
<?php
require_once('lib.commandline.php');
class HelloWorld extends CommandLineApp {
public function main($args) {
echo('O, Hai.');
}
}
Обновите Конечное решение:
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];
}
}
Другой вариант оболочки, который не требует синтаксического анализа, - это tput
:
$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
Используйте функцию PHP ncurses_getmaxyx
.
ncurses_getmaxyx (STDSCR, $Height, $Width)
ПРЕДЫДУЩИЙ:
http://php.net/manual/en/function.getenv.php
$cols = getenv('COLUMNS');
$rows = getenv('ROWS');
«Правильный» способ - это, вероятно, вызвать ioctl TIOCGSIZE
ioctl, чтобы получить ядро представление о размере окна или вызовите команду stty -a
и проанализируйте результаты для строк
и столбцов
Возможно, это ссылка может быть ответом, вы можете использовать коды ANSI Побега для этого, используя echo
, используя определенную последовательность кода Побега, в частности «Устройство запроса», которое я нашел другую ссылку здесь , которая подробно объясняет. Возможно, использование этого позволит вам получить столбцы и строки экрана...
Необходимо создать их массив:
с name = inputname []
и получить с помощью post, request или get
$inputs = $_POST['inputname'];
print_r($inputs);
-121--1254182- Переменные среды можно найти в суперглобальной переменной $ _ ENV. Например,
echo $_ENV['ROWS'];
.
Возможно, эта ссылка может быть ответом, вы можете использовать для этого коды выхода ANSI, используя эхо
, используя определенную последовательность кодов выхода, в частности 'Запрос Device », которую я нашел еще по одной ссылке здесь , которая подробно объясняет. Возможно, это поможет вам получить столбцы и строки экрана ...
$ COLUMNS
и $ LINES
, вероятно, не экспортируются в вашу программу. Вы можете запустить export LINES COLUMNS
перед запуском приложения или получить эту информацию напрямую:
$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);