「avatars/avatar.png」のような文字列を渡したいのですが、テンプレートに渡すと文字が入ってしまいます逃げる。 そこで、テンプレートに渡される関数を書きました:
リーリーしかし、依然として「未定義関数 'unescape'」が表示されます。アンエスケープは定義されていないのでしょうか?
「net/url」がインポートされました。
技術的にはいいえ。あなたはそれを定義しましたが、
遅すぎました。関数が定義されているかどうかは、実行中ではなく、解析中にチェックされます。 parseglob があり、それから
tpl.func(...) を実行します。それは普通ではありません。
リーリー
エスケープは 安全な 機能であり、その発生はデータを使用している コンテキスト および unescape# # に依存することに注意してください。 # エスケープは unescape
の入力ではなく 出力
で行われるため、おそらく「ごまかし」を回避するのには役立ちません。
つまり、
を実行すると、パーサーはコンテキストに応じて {{unescape . | urlescaper}}
に変換する可能性があります (urlescaper
は内部エスケープ関数です)。これを回避するには、テンプレート内で 既知の安全な文字列
をそのまま使用する場合は、unescape の代わりに input string を使用する必要があります。
を参照してください。 コンテキスト、エスケープ、文字列の入力などの詳細については、
パッケージのドキュメント以上がテンプレート内の「/」をエスケープするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。