为了账号安全,请及时绑定邮箱和手机立即绑定

在 PHP 的 popen 中格式化输出 bash 脚本

在 PHP 的 popen 中格式化输出 bash 脚本

PHP
缥缈止盈 2021-11-05 15:18:09
在我的 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-?]*[ -\/]*[@-~]/


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信