1

PHP:複数行のコマンドライン出力を異なる行として出力します。タイトルがわかりにくい場合は申し訳ありません。基本的に、BではなくAのような出力が必要です。現在はBのように見えます。nl2brを試しました。私が実行しようとしているスクリプトは次のとおりです。

脚本:

echo "ウイルススキャン結果:";
$ scanme = system('cd / var / www / upload / files; clamscan --remove =yes'。$furl);
printf(nl2br($ scanme));

A:

802931t_e_s_t.txt:OK
-----------スキャンの概要-----------
既知のウイルス:574585
エンジンバージョン:0.95.1
スキャンされたディレクトリ:0
スキャンしたファイル:1
感染したファイル:0
スキャンされたデータ:0.00 MB
読み取ったデータ:0.00 MB(比率0.00:1)
時間:2.352秒(0 m 2 s)
時間:2.352秒(0 m 2 s)

B:

802931t_e_s_t.txt:OK -----------スキャンの概要-----------既知のウイルス:574585エンジンバージョン:0.95.1スキャンされたディレクトリ:0スキャンされたファイル:1感染したファイル: 0スキャンされたデータ:0.00 MBデータの読み取り:0.00 MB(比率0.00:1)時間:2.352秒(0 m 2 s)時間:2.352秒(0 m 2 s)

4

3 に答える 3

4

これがコマンドラインにあるのに、なぜnl2brを使用しているのですか?

nl2br<br />は、新しい行のタグを出力します...コマンドラインでは意味がありません

編集

2つのこと:

1回試す

system('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);

2システムの代わりにexec関数を使用することをお勧めします

例えば

exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);
$scanme = implode("\n",$scanme);

exec(string $ command [、array&$ output [、int&$ return_var]])

于 2009-06-18T07:14:57.170 に答える
0

コマンドラインで実行している場合、改行は Windows 環境では '\n' または '\r\n' として表されます。したがって、各行の最後に \n があることを確認してください。そうすれば、必要な出力が得られるはずです。編集:
トム:おっと。修理済み。

于 2009-06-18T07:21:32.133 に答える