2016-07-20 19 views
2

PHPでANSIエスケープコードCSI 6nの結果を読み取るにはどうすればよいですか?PHP - ANSIエスケープコードの読み方CSI 6n

(DSR - [デバイスのステータスレポート:https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes

<?php 
fwrite(STDOUT, "\033[6n"); 
$code = fread(STDIN,1); 
die($code); 

このコードは、CSIの6Nを実行しますが、私は応答をキャプチャすることはできませんよ、それは常に際のphp終了プリントアウトされます。

答えて

0

バッファリングされていない入力を読み込むための準備が必要です。ここに例があります:

<?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

ありがとう –

関連する問題