【问题标题】:PHP: Output multiple line command-line outputs as different linesPHP:将多行命令行输出输出为不同的行
【发布时间】:2009-06-18 07:12:11
【问题描述】:

PHP:将多行命令行输出输出为不同的行。 抱歉,如果标题难以理解。基本上我想要我的输出像A,而不是B。它目前看起来像B。我已经尝试过nl2br。我要运行的脚本是:

脚本:

echo "病毒扫描结果:"; $scanme = system('cd /var/www/upload/files; clamscan --remove=yes '.$furl); printf(nl2br($scanme));

答:

802931t_e_s_t.txt:好的 ----------- 扫描摘要 ----------- 已知病毒:574585 引擎版本:0.95.1 扫描目录:0 扫描文件:1 受感染的文件:0 扫描数据:0.00 MB 读取数据:0.00 MB(比率 0.00:1) 时间:2.352 秒(0 米 2 秒) 时间:2.352 秒(0 米 2 秒)

乙:

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)

【问题讨论】:

    标签: php command-line command lines


    【解决方案1】:

    如果 nl2br 在命令行上,你为什么要使用它?

    nl2br 为新行输出 <br /> 标记...这在命令行上没有任何意义

    编辑

    两件事:

    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 ]])

    【讨论】:

    • 结果是:
       733141t_e_s_t.txt: OK ----------- SCAN Summary ----------- 已知病毒:574585 引擎版本: 0.95.1 扫描的目录:0 扫描的文件:1 受感染的文件:0 扫描的数据:0.00 MB 读取的数据:0.00 MB(比率 0.00:1) 时间:2.305 秒(0 m 2 s) 时间:2.305 秒(0 m 2 s) 
      似乎只影响最后一行。还有其他想法吗?
    • 733141t_e_s_t.txt:OK ----------- 扫描摘要 ----------- 已知病毒:574585 引擎版本:0.95.1 扫描目录: 0 扫描文件:1 受感染文件:0 扫描数据:0.00 MB 数据读取:0.00 MB(比率 0.00:1) 时间:2.305 秒(0 m 2 s) 时间:2.305 秒(0 m 2 s)
    • 现在可以工作了,看起来 $scanme 实际上是在输出没有回显或 printf 的数据。感谢您的帮助。
    • 不用担心。这些函数的文档说 system、exec 等返回一个字符串。但这是返回的“最后”一行。可选的第二个/第三个参数用于输出变量。
    【解决方案2】:

    您是否尝试过直接打印命令的输出?

    echo "Virus Scan Results:";
    echo exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl);
    

    PS。你真的应该像这样清理输入(如果你还没有这样做的话):

    $furl = escapeshellarg($furl)
    

    escapeshellarg() - 转义字符串以用作 shell 参数

    【讨论】:

      【解决方案3】:

      如果您在命令行上运行,则换行符表示为“\n”,或在 Windows 环境中表示为“\r\n”。因此,请确保每行末尾都有一个 \n,并且您应该得到您想要的输出。 编辑:
      汤姆:哎呀。固定。

      【讨论】:

        猜你喜欢
        • 2011-10-28
        • 2012-05-03
        • 1970-01-01
        • 2017-10-09
        • 1970-01-01
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        相关资源
        最近更新 更多