PHP - Breite des Fensters auslesen

Dieses Thema im Forum "Programmierung" wurde erstellt von jensIO, 1. August 2016.

  1. jensIO
    Offline

    jensIO

    Registriert seit:
    28. Juli 2015
    Beiträge:
    602
    Ort:
    Internet, im Neuland
    Minecraft:
    jens1o
    Hey,

    ich brauche kurz mal Hilfe bei einer kleinen Funktion um die Breite des CLI Fensters auslesen zu können. Das ganze soll aber möglichst auf allen Platformen funktionieren. Das hier ist mein momentaner Ansatz(der aber nur auf Windows geht):
    PHP:
    1. <?php
    2.  
    3.  
    4. require_once 'global.php';
    5.  
    6. use jens1o\php_kvv\main\Main;
    7.  
    8. // init main
    9. Main::getInstance(['disableNormalStartUp' => true, 'debug' => false]);
    10.  
    11. $output = [];
    12. exec('mode con', $output);
    13. $rows = $output[4] ?? null;
    14. if($rows !== null) {
    15.     $number = explode(':', $rows)[1];
    16.     // remove spaces
    17.     $rows = (int) str_replace(' ', '', $number);
    18.     if(!is_numeric($rows)) {
    19.         $rows = 32;
    20.     }
    21. } else {
    22.     $rows = 32;
    23. }
    24.  
    25. // Die 5 Zeichen, die subtrahiert werden, sind wegen dem Prefix, der vorne noch angehängt wird.
    26. Main::getLogger()->info(str_pad('WELCOME', ($rows - 5), ' = ', STR_PAD_BOTH));
    27.  
    28. ?>
    Weiß jemand, wie ich das auf jedem OS gleich funktioniert? Hab da nichts universelles gefunden.
     
    #1
  2. Thonny
    Offline

    Thonny

    Registriert seit:
    22. Juli 2016
    Beiträge:
    12
    Ort:
    Itzehoe
    Minecraft:
    Thonny
    Das wird nicht funktionieren nur über php.

    php ist nämlich eine 'serverside scripting language'. Du müsstest mit JavaScript die Werte auslesen und an den Server senden. (wozu auch immer du sie brauchst).

    Code (Javascript):
    1.  
    2. var screenWidth = window.screen.width;
    3. var screenHeight = window.screen.height;
    4. jQuery.get("somepage.php?width=" + screenWidth + "&height="+screenHeight+);
    5.  


    Und das funktioniert auch mit allen Browsern ;)
     
    #2
  3. jensIO
    Offline

    jensIO

    Registriert seit:
    28. Juli 2015
    Beiträge:
    602
    Ort:
    Internet, im Neuland
    Minecraft:
    jens1o
    Ich will es aber mit PHP, und wie du gemerkt hast mit CLI, das heißt das läuft in der Console.
    Ich will die NICHT als Websprache nehmen, sondern in der Console, eigentlich das Hauptmodul von PHP. (apache2-php/nginx-php ist nur eine erweiterung...)

    Dein Beitrag ist komplett am Thema vorbei. Hier mal, was ich will.
    cli.png

    Das unten ist die Ausgabe, genau genommen ein Command Line Interface. Command Line hat damit nichts zu tun. Sonst würde das exec nichts bringen.

    Zusätzlich nutzt du einerseits pures JS, ansonsten jQuery... Du müsstest mich darauf ja auch hinweisen ^^
     
    #3
  4. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    Minecraft:
    Inkemann
    Ich bin mir ziemlich sicher, dass es keine allgemeine Lösung dafür gibt. Mir würden ein paar für Linux einfallen, die aber auf Windows/OS X nicht funktionieren und umgekehrt.
     
    #4
    adagi und jensIO gefällt das.
  5. jensIO
    Offline

    jensIO

    Registriert seit:
    28. Juli 2015
    Beiträge:
    602
    Ort:
    Internet, im Neuland
    Minecraft:
    jens1o
    Kannst du mir das sagen? Dann werde ich wohl das ganze verschachteln müssen.
     
    #5
  6. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    Minecraft:
    Inkemann
    Das einfachste was mir so einfällt, das auf jeden Fall für Linux gehen sollte:
    Code (PHP):
    1. $term_width = exec('tput cols');
    2. $term_height = exec('tput lines');
    Eigentlich wäre es für OS X (10.8) auch so, ich musste aber gerade feststellen, dass OS X in meiner VM aus einem mir noch nicht bekannten Grund zwar tput cols aber nicht tput lines zu verarbeiten weiß.
     
    #6
    adagi, BashScript und jensIO gefällt das.
  7. jensIO
    Offline

    jensIO

    Registriert seit:
    28. Juli 2015
    Beiträge:
    602
    Ort:
    Internet, im Neuland
    Minecraft:
    jens1o
    Danke dir! ;)

    tput lines brauche ich nicht, nur tput cols.
     
    #7
    adagi und Inkemann gefällt das.