9

PHPデータベースでこれを探すキーワードがわからないので、ここで質問しています。

私が知りたい理由は、さまざまなオペレーティング システムがテキスト ドキュメントの新しい行をどのように処理するかということです。

WindowsでCSVファイルを使用していますが、新しい行を追加すると思うたびに、実際には新しい行が最新の行の後ろに貼り付けられます。

理由は、Windows では、新しい行は次のとおりです。\r\n そして、私が使用している CSVHandler.class.php ファイルは、\n

ただし、MAC OS X ではこれが新しい行であり、Windows とは異なります。

だから私はこれを探しているので、簡単なif()ステートメントを実装してこれを解決できます。現在、私は をハードコーディングしました\r\nが、もっと単純なはずですよね?

4

13 に答える 13

14

PHP には、直面している問題を解決するための定数PHP_EOLが含まれています。これは、php 4.3.10 および PHP 5.0.2 以降で使用できます。これには、PHP が実行されているサーバーに適した行末シーケンスが含まれています。

特定のクライアントに適した別の行末シーケンスを使用する場合は、自分でコーディングする必要があります。クライアント OS を特定する 1 つの方法は、サーバーに最新のbrowscap.iniがあると仮定して、get_browserを使用することです。

于 2009-03-08T16:12:01.740 に答える
12

定義済みの定数PHP_OSを使用できます。

私は使用しています

if (PHP_OS === 'WINNT') {...}

于 2010-11-08T15:18:28.607 に答える
5

php_uname()サーバーのオペレーティング システムに関する情報は、次の関数で取得できます。

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

また、バージョンに関する完全な情報を取得することもできます。

于 2009-03-18T08:33:11.470 に答える
2

また、php info 呼び出しを実行して、PHP セットアップの多くの構成設定を確認することもできます。コードは簡単です。

phpinfo();
于 2009-03-08T16:23:46.813 に答える
2

$_SERVER 変数を確認してください。

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

その後、strstr (または任意の文字列比較関数) を使用して、Windows を使用しているかどうかを確認できます。この例では、SERVER_SIGNATURE をチェックしましたが、任意のキーを使用できます。

$isWindows = strstr($_SERVER[SERVER_SIGNATURE], "Win32") !== FALSE;
于 2009-03-08T16:06:50.693 に答える
1

php_unameをお勧めします。ドキュメントから説明を読むだけです:

php_uname — PHP が実行されているオペレーティング システムに関する情報を返す

上記のPHP_OSの提案は気に入りましたが、ドキュメントの次のメモに従って注意してください。

PHP_OS 定数の使用を検討してください。ただし、この定数には、PHP が構築されたオペレーティング システムが含まれることに注意してください。

于 2011-10-07T21:24:17.490 に答える
1

すでにたくさんの答えがありますが、ここに私の2セントがあります:

function windows_server()
#   Purpose:    Check if server is Windows
{
    return in_array(strtolower(PHP_OS), array("win32", "windows", "winnt"));
}

## --------------------------------------------------------

function linux_server()
#   Purpose:    Check if server is Linux
{
    return in_array(strtolower(PHP_OS), array("linux", "superior operating system"));
}
于 2011-07-05T21:04:11.813 に答える
0
$svr_os=strtolower(reset(explode(' ',php_uname('s'))));

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

$isWindows=$svr_os==='windows';
于 2010-02-01T16:24:18.223 に答える
0

読み取り時に行う最も安全な方法は、ファイル自体から行末文字を決定するか、すべての行末を交換可能に受け入れることです。これにより、csv ファイルを 1 つのマシンから別の OS の別のマシンにコピーする場合に、問題が発生するのを防ぐことができます。書く前に読んだ場合、出力の行末を、読んだときに識別した行末と一致させることができます。

CSV ファイルの場合、php にはいくつかのライブラリ関数があります。php.net で fgetcsv と fputcsv を検索してみてください。php.ini で設定できる auto_detect_line_endings がありますが、それがどのように機能するかの詳細はわかりません。

LinuxとWindowsの両方で、常に「\ n」を単独で使用します。ウィンドウでメモ帳を使用して編集しますが、エンディングが壊れることはありません。私自身のcsvの使用では、さまざまなエンディングをサポートするのは面倒だと思いますが、ユーザーが操作する必要がある場合は、便利ではなく安全である必要があります.

于 2009-03-08T16:25:28.870 に答える
0
<?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;
?>
于 2009-11-28T00:35:13.750 に答える
-2

また、この機能を試してください:

$b = get_browser(null, true);

$b['platform'] は OS になります。

ところで、*nix OS は \n を改行として使用します。Mac は \r、Windows は \r\n を使用

于 2009-03-08T16:14:42.357 に答える