PHP имеет функцию для обнаружения ОС, на которой он работает?

=ARRAYFORMULA(IF(LEN(Sheet2!A3:A), 
 IF(((Sheet2!B3:B="bad")+(Sheet2!B3:B="missing"))* 
    ((Sheet2!C3:C="bad")+(Sheet2!C3:C="missing")), TRUE, FALSE), ))

0

9
задан Vordreller 8 March 2009 в 16:05
поделиться

9 ответов

PHP включал постоянный PHP_EOL для решения проблемы, с которой Вы сталкиваетесь, доступный с тех пор php 4.3.10 и PHP 5.0.2 - это содержит подходящую последовательность конца строки для сервера, на котором работает PHP.

Если Вы хотите использовать другую последовательность конца строки, подходящую для конкретного клиента, то необходимо будет кодировать это сами. Один способ определить клиент, ОС должна использовать get_browser, принимая Ваш сервер, имеет актуальный browscap.ini

14
ответ дан 4 December 2019 в 05:52
поделиться

* "BTW, отклоните использование ОС \n как новая строка. Mac usees \r, Windows - \r\n"

ARRRGH! ПРЕКРАТИТЕ УВЕКОВЕЧИВАТЬ ЭТОТ МИФ!

Mac OS 9 использовал это как 10 лет назад, но никто больше не использует OS9. ИСПОЛЬЗОВАНИЕ MACS ОКОНЧАНИЯ СТРОКИ UNIX. \n. "Mac", используемый сегодня, должен относиться к современным компьютерам, как "Windows" относится к XP или перспективе, если иначе не квалифицировано.

Высказывание \r использования Mac почти так же корректно, что "выполнения Windows сверху MS-DOS, поддержки только файловая система FAT16, и не имеет никакой 64-разрядной поддержки".

Никто никогда никогда не должен использовать \r ни для чего ни при каких обстоятельствах. Если они не предназначаются для макинтошей старой задницы.

35
ответ дан 4 December 2019 в 05:52
поделиться

Информация о серверной операционной системе может быть получена с php_uname() функция:

echo 'I have been run on '.php_uname('s');

Это также позволяет получать полную информацию о версии.

5
ответ дан 4 December 2019 в 05:52
поделиться

Проверьте $ _SERVER переменная.

echo "<pre>";
print_r($_SERVER);

Можно затем использовать strstr (или любая функция сравнения строк), чтобы проверить, находитесь ли Вы в Windows. В этом примере я проверил SERVER_SIGNATURE, но можно использовать любой ключ, который Вы хотите.

$isWindows = strstr($_SERVER[SERVER_SIGNATURE], "Win32") !== FALSE;
2
ответ дан 4 December 2019 в 05:52
поделиться

Можно также хотеть сделать php информационный вызов, чтобы взглянуть на большое количество параметров конфигурации на установке PHP, код прост:

phpinfo();
2
ответ дан 4 December 2019 в 05:52
поделиться

Вероятно, самая безопасная вещь сделать, когда чтение должно определить конечный символ (символы) строки из самого файла или принять все окончания строки попеременно. Это защищает Вас от вреда при копировании файла CSV от одной машины до другого с другой ОС. Если Вы читаете перед записью можно заставить выходные окончания строки соответствовать окончаниям строки, которые Вы определили при чтении.

Для файлов CSV php имеет некоторые библиотечные функции. Попытайтесь искать php.net fgetcsv и fputcsv. Существует auto_detect_line_endings, который может быть установлен в php.ini, но я не знаю специфических особенностей того, как он работает.

Я всегда использую "\n" отдельно и на Linux и на окнах. Я использую блокнот для редактирования их в окнах, и он не повреждает окончания. Для моего собственного использования csv я нахожу, что это - слишком много стычки для поддержки различных окончаний, но если это - что-то, с чем пользователи должны взаимодействовать затем, Вы хотите быть в безопасности, а не удобными.

0
ответ дан 4 December 2019 в 05:52
поделиться

Кроме того, попробуйте эту функцию:

$b = get_browser(null, true);

и в $b ['платформа'] будет ОС.

BTW, *отклоняют использование ОС \n как новая строка. Mac usees \r, Windows - \r\n

-2
ответ дан 4 December 2019 в 05:52
поделиться
<?php
$OSList = array
(
        // Match user agent string with operating systems
        'Windows 3.11' => 'Win16',
        'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
        'Windows 98' => '(Windows 98)|(Win98)',
        'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
        'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
        'Windows Server 2003' => '(Windows NT 5.2)',
        'Windows Vista' => '(Windows NT 6.0)',
        'Windows 7' => '(Windows NT 7.0)',
        'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
        'Windows ME' => 'Windows ME',
        'Open BSD' => 'OpenBSD',
        'Sun OS' => 'SunOS',
        'Linux' => '(Linux)|(X11)',
        'Mac OS' => '(Mac_PowerPC)|(Macintosh)',
        'QNX' => 'QNX',
        'BeOS' => 'BeOS',
        'OS/2' => 'OS/2',
        'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
);

// Loop through the array of user agents and matching operating systems
foreach($OSList as $CurrOS=>$Match)
{
        // Find a match
        if (eregi($Match, $_SERVER['HTTP_USER_AGENT']))
        {
                // We found the correct match
                break;
        }
}
// You are using Windows Vista
echo "You are using ".$CurrOS;
?>
0
ответ дан 4 December 2019 в 05:52
поделиться
$svr_os=strtolower(reset(explode(' ',php_uname('s'))));

$isLinux=$svr_os==='linux';

$isWindows=$svr_os==='windows';
0
ответ дан 4 December 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: