hak*_*kre 5 php console symfony
我正在生成一条消息sprintf(),然后以彩色方式使用Symfony控制台组件输出:
$mask = '<info>%s</info>';
$message = sprintf($mask, 'MyString');
$output->writeln($message);
Run Code Online (Sandbox Code Playgroud)
这通常有效(以绿色输出命名空间).但是,如果字符串以反斜杠结尾,则忽略结束信息 -tag:
$message = sprintf($mask, 'MyString\');
$output->writeln($message);
Run Code Online (Sandbox Code Playgroud)
输出:
MyString</info>
^^^^^^^
Run Code Online (Sandbox Code Playgroud)
显然反斜杠似乎是一种逃避角色,但如何逃避呢?或者如何保留结束</info>标记的含义?
到目前为止,我试过:
addcslashes('My\String\', '\\') - 最后复制内部和单个fy:
My\\String\</info>
Run Code Online (Sandbox Code Playgroud)\ 作为"HTML"实体,HTML实体序列只是逐字输出,结束标记消失了:
My\String\
Run Code Online (Sandbox Code Playgroud)正如您已经猜到的那样,该<字符可以通过 a 转义\。尾部反斜杠可以从Symfony v3.0.3、v2.8.3、v2.7.10 和 v2.3.38 中转义OutputFormatter:
use Symfony\Component\Console\Formatter\OutputFormatter;
$mask = '<info>%s</info>';
$message = sprintf($mask, OutputFormatter::escape('MyString\\'));
$output->writeln($message);
Run Code Online (Sandbox Code Playgroud)
否则你可以使用:
$mask = "\033[32m%s\033[0m";
$message = sprintf($mask, 'MyString\\');
$output->writeln($message);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |