2016-08-29 8 views
1

YAMLファイルにユーザー入力を書き込む必要があります。ユーザー入力はプレーンテキストとして解釈する必要があります。 エスケープするには何が必要ですか?どのようにそれをエスケープするには?YAMLファイルのユーザー入力をエスケープする

yamlファイルを生成するには、SymfonyのYamlコンポーネントを使用します。たとえば、次のように

コード:

$result = ['key' => '@text']; 
echo $yaml->dump($result); 

実際の出力:

key: '@text' 

私はsymfonyのYAMLサービスと、この出力をロードすると、私は致命的なエラーが発生します。

Invalid type for path "key". Expected scalar, but got object.

所望の出力:OKと@textとして解釈さ(@はreserved indicatorため)

key: '@@text' 

この出力負荷。

+0

私はSymfonyのYAMLコンポーネントがエスケープ処理をすることを願っています... – Chris

+0

@Chris私もそうですが、そうではありません:/ –

+0

あなたの質問を編集し、期待どおりに動作しない入力の例を追加できますか?期待される出力と実際の出力? – Chris

答えて

1

出力は完全に有効です。ダンパーは一重引用符で囲んで値をエスケープします。一重引用符なしでは無効になります。

@は2倍にする必要はなく、@はYAMLの構文デバイスではありません。 @@textは依然として引用符のない無効なYAMLスカラーになります。

+0

有効かもしれませんが、プレーンテキストの意味はありません。このようなYAMLfileをロードしようとすると、次のエラーが表示されます。パス "key"のタイプが無効です。スカラーが必要ですが、オブジェクトがあります。 –

+0

''@ text''は引用符付きのYAMLスカラーです。それは常に文字列( '' 42 ''は常に文字列、 '42 'は整数として解釈されるかもしれません)として解釈されるので、普通のスカラー(すなわち、引用符なしのもの)とは異なります。 YAMLの読み込み中にエラーが発生した場合は、そのことについて質問する必要があります。現在の質問から完全に欠けている情報です。 – flyx

+0

私はそれを質問に追加しました。 –

関連する問題