PHP, 22 Bytes
`<?=PATH_SEPARATOR>":";`
Gibt aus, 1ob 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 1oder 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_dumpund 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_OSKonstante mit beginnt win(Groß- / Kleinschreibung wird nicht berücksichtigt; Windows, WIN32, WINNT, aber nicht CYGWIN oder Darwin); druckt 1für Windows, sonst nichts.
17/18 Bytes :
<?=strlen("
")-1;
Gibt aus, 1ob 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_SUFFIXist dllunter Windows, aber nicht unbedingt nur da.
php_uname()Gibt Informationen zum Betriebssystem und mehr zurück. beginnt mit Windowsfür Windows.
$_SERVER['HTTP_USER_AGENT']wird enthalten, Windowswenn 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_OSwohl immer die gewünschten infos enthalten.