第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在 Windows 平臺上使用 PHP CLI 獲取終端布局

在 Windows 平臺上使用 PHP CLI 獲取終端布局

PHP
慕婉清6462132 2023-10-15 17:31:20
我正在使用 XAMPP 和 Windows,并從終端(cmder 或 CMD 或 Power Shell)運(yùn)行一些測試文件。但我需要知道終端布局設(shè)置。行寬; 創(chuàng)建適合端子列布局的框架盒或抽屜盒。我運(yùn)行它來獲取全局變量但什么也沒得到:echo var_dump($_SERVER);我如何從服務(wù)器端獲取這些信息?
查看完整描述

2 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

$info = shell_exec('MODE 2> null') ?? shell_exec('tput cols');

if (strlen($info) > 5) {

? ? preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', $info, $match);

? ? $info = $match['cols'] ?? 80;

}

echo 'Terminal Width: '. $info;

cmder 中的輸出(基于 Windows 大?。╓indows 10):


C:\xampp\htdocs\dev\avi3\dev

λ php test.php

Terminal Width: 75

PowerShell 中的輸出(基于 Windows 大小)(Windows 10):


PS C:\xampp\htdocs\dev\avi3\dev> php test.php

Terminal Width: 95

從putty(在Windows 10中)輸出連接到(Ubuntu 20.04服務(wù)器)

(基于putty設(shè)置,Windows默認(rèn)固定為80,我將其更改為120):


admin@testserver:/var/www/html/dev/$ php test.php

Terminal Width: 120

讀者:請隨時(shí)添加有關(guān)在其他平臺獲取此數(shù)據(jù)的注釋。將融入答案。


查看完整回答
反對 回復(fù) 2023-10-15
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

有一個(gè)$_SERVER可通過 PHP CLI 訪問的數(shù)組(使用 PHP 7.4 進(jìn)行測試);盡管它不會包含任何與 HTTP 服務(wù)器相關(guān)的變量。其余部分將根據(jù)您的環(huán)境而有很大差異。我查看了 Windows 10 上可用的內(nèi)容,包括命令提示符和 CygWin,以及 Centos 7。沒有一個(gè)包含客戶端大小或其他窗口系統(tǒng)信息。(對于基于 HTTP 的 PHP 來說也是如此;您需要 Javascript 來獲取用戶代理大小。)


作為參考,如果您在終端中運(yùn)行php -i,您將在最后看到可用服務(wù)器和環(huán)境變量的完整列表。但正如我所指出的,用戶代理大小不是這些變量之一。(也許有一個(gè)用戶代理可以輸入尺寸;我不知道?。?/p>


我們必須在這里做點(diǎn)別的事情,即。運(yùn)行 shell 命令并查詢底層平臺的信息。首先,一個(gè)堅(jiān)韌的“老派”解決方案(在 CMD 和 PS 中都有效):


// Using PHP as CLI on Windows.

$info = shell_exec('MODE');

運(yùn)行MODE不帶參數(shù)的命令會得到類似以下輸出:


Status for device CON:

----------------------

    Lines:          9001

    Columns:        120

    Keyboard rate:  31

    Keyboard delay: 1

    Code page:      65001

“列”行以字符為單位說明窗口寬度。(注意:此輸出是特定于語言環(huán)境的。您可能會得到“Columnas”或“Oszlopok”等)然后讓我們解析該數(shù)字:


preg_match('~Columns:\s+(\d+)~', $info, $match);

$columns = $match[1] ?? null;

如果數(shù)據(jù)可用,該$columns變量將包含當(dāng)前命令提示符終端的字符寬度。如果沒有,請?jiān)O(shè)置默認(rèn)寬度(此處簡單為“null”)。


該解決方案僅適用于 Windows 命令提示符和 Power Shell 上的 PHP CLI;或支持該MODE命令的其他(大概是 Microsoft)終端應(yīng)用程序。


如果可以選擇調(diào)用 PowerShell,還有一種更簡潔的替代方法來獲取列寬。列大小/字符寬度存儲在 PS$Host對象中:


// Returns the number of columns:

$columns = shell_exec('powershell $Host.UI.RawUI.WindowSize.Width');

對于其他平臺,您必須找到等效的命令。在bash中,等效項(xiàng)是tput cols(返回列數(shù))。如下:


$columns = shell_exec('tput cols');

此 bash 命令也適用于 MacOS 和 CygWin(均經(jīng)過測試)。夠簡單的!

讀者:請隨時(shí)添加有關(guān)在其他平臺獲取此數(shù)據(jù)的注釋。將融入答案。


查看完整回答
反對 回復(fù) 2023-10-15
  • 2 回答
  • 0 關(guān)注
  • 164 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號