在我的 PHP 脚本中,我正在使用 popen() 执行一个 bash 脚本并输出响应。但是响应有不同的编码,我不知道如何转换它。我试图将其转换为 utf8 但没有结果。还尝试将语言环境设置为 nl_NL.utf8。PHP函数:while (@ ob_end_flush()); // end all output buffers if any$proc = popen("$cmd 2>&1 ; echo Exit status : $?", 'r');$live_output = "";$complete_output = "";while (!feof($proc)){ $live_output = fread($proc, 4096); $complete_output = $complete_output . $live_output; echo "$live_output"; @ flush();}pclose($proc);示例响应:[2K[1A[2K[G[2K[1A[2K[G⠋ load plugins[2K[1A[2K[Gsuccess load plugins - 0.975 s⠋ load plugins这应该只是:success load plugins - 0.975 s⠋ 是一个正在移动的装载机。这可能是问题吗?或者这些字符是线条的颜色代码?
1 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
那些是ANSI Escape Sequences
,它们不是 bash 命令,而是用于在一行上着色输出或替换/更新输出的控制台命令。
命令通常会提供一个—no-color
标志。
此外,还存在用于常见命令的环境变量:NO_COLOR
. 这是禁用彩色输出的常用标志/变量列表 => https://no-color.org/
否则,您始终可以使用正则表达式过滤输出: /(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]/
- 1 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消