3

我有一个 php 文件调用一个脚本并像这样打印输出

    $output=shell_exec('/usr/bin/python hello.py');
    回声$输出;

它打印;

    b'total 16\ndrwx---rx 2 oae 用户 4096 Jul 31 14:21 .\ndrwxr-x--x+ 9 oae root 4096 Jul 26 13:59 ..\n-rwx---rx 1 oae 用户 90 8 月 3 日 11:22 hello.py\n-rwx---rx 1 oae 用户 225 8 月 3 日 11:22 index.php\n'

但应该是这样的;

    总计 16K
    drwx---rx 2 oae 用户 4.0K Jul 31 14:21 ./
    drwxr-x--x+ 9 oae root 4.0K Jul 26 13:59 ../
    -rwx---rx 1 oae 用户 90 年 8 月 3 日 11:22 hello.py*
    -rwx---rx 1 oae 用户 225 Aug 3 11:22 index.php*

\n 字符不应显示。我该如何解决这个问题?

4

4 回答 4

5

这可以工作

$output=shell_exec('/usr/bin/python hello.py');
echo "<pre>";
print_r($output);
echo "</pre>";
于 2012-08-03T09:13:53.267 回答
0

希望您尝试在 web.xml 中打印此字符串。在这种情况下,PHP 可能无法使用 \n 字符,而是希望<br/> PHP 有一个内置函数来处理字符串的这种转换。

http://php.net/manual/en/function.nl2br.php

于 2012-08-03T08:39:37.767 回答
0

另一种方法是将字符串包装在<pre>...</pre>标签之间。

于 2012-08-03T08:45:01.263 回答
0

这似乎是 Python 3 脚本的输出:

from subprocess import check_output as qx
print(qx(['ls']))

子进程返回字节,打印函数将它们的表示打印为b'...\n...'其中 '\n' 是两个字符(不是换行符)。

您可以通过将 qx() 返回值转换为 Unicode 然后打印它或按原样写入字节来修复它:

sys.stdout.buffer.write(qx(['ls']))
于 2012-08-03T12:32:01.797 回答