【问题标题】:How to remove all formatting from the output of a console command written in PHP如何从用 PHP 编写的控制台命令的输出中删除所有格式
【发布时间】:2018-01-09 12:02:38
【问题描述】:

我有一些命令可以将输出格式化到控制台。

这些命令是使用 Symfony 控制台组件编写的,并使用 its styles 格式化。

在控制台中运行时,格式很好,但这些命令通常也是从我编写的队列系统中运行的,因此日志会显示在 HTML 页面上。

结果真的很难理解,因为它充满了在控制台上有用但在网页上读取输出时完全没用的所有格式化“标签”。

这是我所说的一个例子:

[32mStarting command[39m
[32m===========================[39m

[34m[>] Analyzing Entity [39m[32This is the entity[39m[34m.                                             [39m
[34m[>] Starting analyzing Entity [39m[32mThis is the entity[39m[34m.                                    [39m
[34m[>] Creating new Job for [39m[30;42This is the entity[39;49m[34m to analyze it in [39m[30;42m+1 week[39;49m[34m (Cause: The Entity is a clone of [39m[30;42Entity2[39;49m[34m).[39m
[34m[>] New Job for [39m[30;42mEntity[39;49m[34m created.                                         [39m
...

如您所见,输出几乎不可读。

如何在将其保存到数据库之前从中删除所有格式?

【问题讨论】:

  • 在 PHP 中使用某种正则表达式将有助于在将文本输出到网页之前删除所有不需要的部分。
  • 哦,是的...但是考虑到所有可能的变化并不是那么简单!
  • 更改您的代码以使用 echo sprintf(...) 并完全绕过控制台输出代码。

标签: php symfony console


【解决方案1】:

您可以使用 --no-ansi 选项禁用 ANSI 颜色

你也可以试试ANSI to HTML5 Converter

【讨论】:

  • 我猜 --no-ansi 应该做的工作
  • 我将使用 ANSI 到 HTML5 转换器,因为我想保留网页中的颜色,而 --no-ansi 将完全删除它们。感谢您提到的精彩图书馆!
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 2016-06-07
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多