バージョン 1.9.0 以降、Twigはフィルターのhtml_attr
戦略を提供します (ドキュメントを参照)。escape
このhtml
戦略では、htmlspecialchars PHP 関数を使用します (これは、ソースをざっと見て確認します)。このhtml_attr
戦略では、最終的に同じ効果があると思われる一連のカスタム置換を使用します。
2つの戦略に違いはありますか?
ソースは次のように述べています。
/*
* While HTML supports far more named entities, the lowest common denominator
* has become HTML5's XML Serialisation which is restricted to the those named
* entities that XML supports. Using HTML entities would result in this error:
* XML Parsing Error: undefined entity
*/
実際には、html
戦略は HTML で特別な意味を持つ文字のみを変更しますが、html_attr
戦略はスペースを含むほぼすべての英数字以外の文字を置き換えます。例を参照してください。
このテキストを見て、いいですか?
raw: See this <b>text</b>, OK?
html: See this <b>text</b>, OK?
html_attr: See this <b>text</b>, OK?
私の理解では、HTML の場合はhtml
戦略を使用でき、XML ドキュメントの場合はhtml_attr
戦略を使用する方が適切ですが、実際にはこれを試していません。