应用 preg_replace() 生成不需要的符号

applying preg_replace() generated unwanted symbols

我有一个函数,用于格式化 proc_open 的输出。

 private function prepareOutput($output) {
        $output = htmlentities($output);
        $output = addslashes($output);
        $output = explode("\n", $output);
        $output = implode("</span><span>", $output);
        $output = sprintf("<span>%s</span>", $output);
        $output = preg_replace("/\r\n|\r|\n/", '\n', $output);
        $output = preg_replace('/\x1B\[0m(\x1B)/', "\x1B", $output);
        $output = preg_replace('/\x1B\[m/', '', $output);
        $output = preg_replace('/\x07/', '', $output);
        flush();
        return $output;
    }

我用它来执行其他 Linux shell 这样的命令

prepareOutput(stream_get_contents($this->pipes[1]));

参数可以在哪里,例如lswhoami 等。该函数有效但会在输出中生成一些不需要的字符。例如对于 exit 它给出以下输出:

]0;Peppermint Terminal[01;32musr@usrfox-g50[01;34m ~ $[00m exit
logout

这些 ]0;[01;34m[00m 符号不是在输出中想要。他们来自哪里?

这些是来自 bash shell 的标志,用于更改控制台文本的颜色。通常你会得到你正在使用的程序 return 纯文本而不是格式化的值。