PHP, 22 Bytes
`<?=PATH_SEPARATOR>":";`
Gibt aus, 1
ob das Pfadtrennzeichen ein Semikolon ist (Doppelpunkt oder leer für alle anderen Betriebssysteme außer DOS und OS / 2), sonst nichts.
auch 22 bytes , aber nicht so sicher:
<?=strpos(__FILE__,92);
Gibt eine positive Ganzzahl aus, wenn der Dateipfad einen Backslash enthält. sonst nichts.
Eine sichere Alternative mit 27 Bytes : <?=DIRECTORY_SEPARATOR>"/";
Drucke 1
oder nichts.
Ein seltsamer Fund : <?=__FILE__[1]==":";
( 20 Bytes ) sollte auch nicht sicher sein, aber ok. Aber obwohl __FILE__
ich vorgab, ein String zu sein (ich habe es versucht var_dump
und gettype
), löst die Indizierung einen Fehler aus, es sei denn, Sie kopieren ihn an eine andere Stelle (Verkettung funktioniert auch) oder verwenden ihn als Funktionsparameter.
Edit:
<?=(__FILE__)[1]==":";
(auch 22 Bytes ) funktioniert in PHP 7; aber das liegt daran, dass die Klammern den Wert der Konstanten in eine temporäre Variable kopieren.
27 Byte : Testet, <?=stripos(PHP_OS,win)===0;
ob die vordefinierte PHP_OS
Konstante mit beginnt win
(Groß- / Kleinschreibung wird nicht berücksichtigt; Windows, WIN32, WINNT, aber nicht CYGWIN oder Darwin); druckt 1
für Windows, sonst nichts.
17/18 Bytes :
<?=strlen("
")-1;
Gibt aus, 1
ob es mit Windows Linebreak gespeichert wurde (auch unter DOS, OS / 2 und Atari TOS - obwohl ich bezweifle, dass jemals jemand PHP für TOS kompiliert hat) 0
.
Sie können auch die Konstante überprüfen PHP_EOL
.
Mehr Optionen:
PHP_SHLIB_SUFFIX
ist dll
unter Windows, aber nicht unbedingt nur da.
php_uname()
Gibt Informationen zum Betriebssystem und mehr zurück. beginnt mit Windows
für Windows.
$_SERVER['HTTP_USER_AGENT']
wird enthalten, Windows
wenn in einem Browser unter Windows aufgerufen.
<?=defined(PHP_WINDOWS_VERSION_BUILD);
(38 Bytes) funktioniert in PHP> = 5.3
Fazit
Der einzige ausfallsichere Weg, um festzustellen, ob es sich wirklich um Windows handelt, und nichts, was so aussieht, scheint eine Überprüfung des Betriebssystemnamens zu sein. Für PHP: php_os()
Kann aus Sicherheitsgründen deaktiviert werden. wird aber PHP_OS
wohl immer die gewünschten infos enthalten.