应用 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]));
参数可以在哪里,例如ls
、whoami
等。该函数有效但会在输出中生成一些不需要的字符。例如对于 exit
它给出以下输出:
]0;Peppermint Terminal[01;32musr@usrfox-g50[01;34m ~ $[00m exit
logout
这些 ]0; 和 [01;34m 和 [00m 符号不是在输出中想要。他们来自哪里?
这些是来自 bash
shell 的标志,用于更改控制台文本的颜色。通常你会得到你正在使用的程序 return 纯文本而不是格式化的值。
我有一个函数,用于格式化 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]));
参数可以在哪里,例如ls
、whoami
等。该函数有效但会在输出中生成一些不需要的字符。例如对于 exit
它给出以下输出:
]0;Peppermint Terminal[01;32musr@usrfox-g50[01;34m ~ $[00m exit
logout
这些 ]0; 和 [01;34m 和 [00m 符号不是在输出中想要。他们来自哪里?
这些是来自 bash
shell 的标志,用于更改控制台文本的颜色。通常你会得到你正在使用的程序 return 纯文本而不是格式化的值。