我有一个php文件调用脚本并打印出像这样的输出
$output=shell_exec('/usr/bin/python hello.py'); echo $output;
打印;
b'total 16\ndrwx---r-x 2 oae users 4096 Jul 31 14:21 .\ndrwxr-x--x+ 9 oae root 4096 Jul 26 13:59 ..\n-rwx---r-x 1 oae users 90 Aug 3 11:22 hello.py\n-rwx---r-x 1 oae users 225 Aug 3 11:22 index.php\n'
但它应该是这样的;
total 16K drwx---r-x 2 oae users 4.0K Jul 31 14:21 ./ drwxr-x--x+ 9 oae root 4.0K Jul 26 13:59 ../ -rwx---r-x 1 oae users 90 Aug 3 11:22 hello.py* -rwx---r-x 1 oae users 225 Aug 3 11:22 index.php*不应该显示
\ n字符。我该怎样解决这个问题?
答案 0 :(得分:4)
这可以工作
$output=shell_exec('/usr/bin/python hello.py');
echo "<pre>";
print_r($output);
echo "</pre>";
答案 1 :(得分:0)
希望您尝试在网络中打印此字符串。
在这种情况下,PHP可能无法使用\ n字符,而是期望<br/>
PHP有一个内置函数,负责字符串的转换。
答案 2 :(得分:0)
另一种方法是将字符串包装在<pre>...</pre>
标记之间。
答案 3 :(得分:0)
它似乎是Python 3脚本的输出:
from subprocess import check_output as qx
print(qx(['ls']))
子进程返回字节,print函数将其表示打印为b'...\n...'
,其中'\ n'是两个字符(不是换行符)。
您可以通过将qx()返回的值转换为Unicode然后打印它或按原样写入字节来修复它:
sys.stdout.buffer.write(qx(['ls']))