是否可以获得终端宽度或打印100%宽度的填充线?

时间:2017-10-30 15:00:57

标签: php terminal command-line-interface

PHP。 fputs(STDOUT, 'some short text')! 有没有办法获得启动php脚本的终端的char长度?

如何使用fputs(STDOUT, "Some Error\n");打印带有红色全线背景的文字?

2 个答案:

答案 0 :(得分:2)

这将输出一行填充整个终端线的“=”字符。将适用于基于Linux的系统。

// 'tput cols' is a shell command which returns
//   the number of chars to fill up the whole
//   line of the current terminal.
$colCount = shell_exec('tput cols');

// Create the string filling the whole line
$string = str_repeat("=", intval($colCount));

// This is the way to print out text with coloured background
// 48, 5, 160 representing 256-colour of red, green and blue.
fputs(STDOUT, "\e[48;5;160m".$string."\e[0m");

哪些可以压缩到一行

fputs(STDOUT, "\e[48;5;160m".str_repeat("=", intval(shell_exec('tput cols')))."\e[0m");

Here's a script如果您想了解有关在终端上显示颜色的更多信息,请使用支持256色调色板的XTerm / ANSI兼容终端中的ANSI颜色代码。

答案 1 :(得分:1)

您可以使用Symfony \ Console,因为它具有完全符合您需要的Terminal类:

使用composer

安装
composer require symfony/console

创建脚本index.php

<?php

require __DIR__ . '/vendor/autoload.php';

$terminal = new Symfony\Component\Console\Terminal;

$terminalWidth = $terminal->getWidth();
var_dump($terminalWidth);

测试

$ php index.php
int(80)