首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -如何读取ANSI转义代码CSI 6n

PHP -如何读取ANSI转义代码CSI 6n
EN

Stack Overflow用户
提问于 2016-07-20 20:43:39
回答 1查看 323关注 0票数 3

如何用PHP读取ANSI转义代码CSI 6n的结果?

(DSR -设备状态报告:https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes)

代码语言:javascript
复制
<?php
fwrite(STDOUT, "\033[6n");
$code = fread(STDIN,1);
die($code);

这段代码将执行CSI 6n,但我无法捕获响应,当php退出时,它总是被打印出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 06:54:34

您必须为读取无缓冲输入做一些准备。下面是一个示例:

代码语言:javascript
复制
<?php
$term = trim(`stty -g`);
system("stty -icanon -echo");
fwrite(STDOUT, "\033[6n");
$code = trim (fread(STDIN,100) );
system("stty '" . $term . "'");
if ( sscanf($code, "\033[%d;%dR", $row, $col) == 2 ) {
    printf ("position %d,%d\n", $row, $col );
} elseif ( strlen ($code ) > 0 ) {
    printf ("unexpected %d-byte reply\n", strlen ($code ));
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38481680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档