PHP, 22 byte
`<?=PATH_SEPARATOR>":";`
stampa 1se il separatore di percorso è punto e virgola (due punti o vuoto per tutti gli altri sistemi operativi tranne DOS e OS / 2), altrimenti nulla.
anche 22 byte , ma non così sicuro:
<?=strpos(__FILE__,92);
stampa un numero intero positivo se il percorso del file contiene una barra rovesciata; nient'altro.
Un'alternativa sicura con 27 byte : <?=DIRECTORY_SEPARATOR>"/";stampe 1o niente.
Una strana scoperta : <?=__FILE__[1]==":";( 20 byte ) dovrebbe essere, neanche sicuro, ma ok. Ma sebbene __FILE__finga di essere una stringa (ho provato var_dumpe gettype), l'indicizzazione genera un errore, a meno che non venga copiata da qualche altra parte (funziona anche la concatenazione) o la usi come parametro di funzione.
Modifica:
<?=(__FILE__)[1]==":";(anche 22 byte ) funziona in PHP 7; ma questo perché le parentesi copiano il valore della costante in una variabile temporanea.
27 byte : <?=stripos(PHP_OS,win)===0;
verifica se la PHP_OScostante predefinita inizia con win(senza distinzione tra maiuscole e minuscole; Windows, WIN32, WINNT, ma non CYGWIN o Darwin); stampa 1per Windows, altrimenti niente.
17/18 byte :
<?=strlen("
")-1;
stampa 1se è stato memorizzato con l'interruzione di riga di Windows (anche su DOS, OS / 2 e Atari TOS - anche se dubito che qualcuno abbia mai compilato PHP per TOS), altro 0.
Puoi anche controllare la costante PHP_EOL.
più opzioni:
PHP_SHLIB_SUFFIXè dllsu Windows, ma non necessariamente solo lì.
php_uname()restituisce informazioni sul sistema operativo e altro; inizia con Windowsper Windows.
$_SERVER['HTTP_USER_AGENT']conterrà Windowsquando viene chiamato in un browser su Windows.
<?=defined(PHP_WINDOWS_VERSION_BUILD);(38 byte) funziona in PHP> = 5.3
conclusione
L'unico modo sicuro per dire se è davvero Windows, non qualcosa di simile, sembra essere un controllo sul nome del sistema operativo. Per PHP: php_os()può essere disabilitato per motivi di sicurezza; ma PHP_OSprobabilmente conterrà sempre le informazioni desiderate.