为YAML文件转义用户输入


Escaping user input for YAML file

我需要将用户输入写入我的YAML文件。用户输入需要被解释为纯文本。我需要什么才能逃脱?如何逃脱?

为了生成yaml文件,我使用Symfony的yaml组件。例如:

代码:

$result = ['key' => '@text'];
echo $yaml->dump($result);
实际输出:

key:    '@text'

当我用Symfony的yaml服务加载这个输出时,我得到一个致命的错误:

路径"key"的类型无效。期望标量,但得到对象。

期望输出:(因为@是保留指示符)

key:    '@@text'

此输出加载OK,并被解释为@text

输出完全有效。转储程序通过将值放在单引号中来转义该值。没有单引号是无效的。

没有理由将@加倍,并且在YAML中,将@加倍不是一种语法手段。如果没有引号,@@text仍然是无效的YAML标量。