php エディターの Zimo が、Golang に関するちょっとしたトリックを紹介します。 html.Parse を使用して HTML を解析する場合、href のクエリ文字列を書き換えて & 記号を含める必要がある場合があります。この手法は、HTML リンクを処理する際の柔軟性と利便性を高め、開発効率を向上させるのに役立ちます。次に、このテクニックの使用方法とサンプルコードを詳しく説明し、皆様のお役に立てれば幸いです。
次のコードがあります:
リーリーhtml.render 関数は次の出力を生成します:
リーリーなぜクエリ文字列を書き換えて &
を &
(bar と baz の間) に変換するのでしょうか?
この動作を回避する方法はありますか?
テンプレート変換を実行しようとしていますが、URL が壊れるのは望ましくありません。
html.parse
有効な HTML を生成する必要があり、HTML 仕様で href
内のアンパサンド を使用することが規定されている場合属性は Encode する必要があります。
https://www.w3.org/tr/xhtml1/ガイドライン .html#c_12
sgml および xml では、アンパサンド文字 (「&」) はエンティティ参照の開始を宣言します (たとえば、® は登録商標記号「®」を表します)。残念ながら、多くの HTML ユーザー エージェントは、HTML ドキュメント内の & シンボルの誤った使用法を黙って無視します。エンティティ参照のように見えない & シンボルをリテラルの & シンボルとして扱います。 XML ベースのユーザー エージェントは、この誤った使用を許容しません。また、& 記号を誤って使用する文書は「有効」ではないため、この仕様には準拠しません。文書が従来の HTML ユーザー エージェントおよび XML ベースのユーザー エージェントと互換性があることを確認するには、文書内で使用される & 記号 (リテラル文字として扱われる) は、それ自体をエンティティ参照 (「&」など) として表す必要があります。
たとえば、要素の href 属性がパラメーターを含む CGI スクリプトを参照する場合、http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp のように表現する必要があります。 ; name=user
http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
の代わりに。
この場合、実際に Go を使用すると HTML がより良く、より効率的になります
そうは言っても、ブラウザはそれをエスケープするので、クリックしても結果の URL は正しいままです (& ではなく、単に
&:
以上がGolang html.Parse は & を含むように href クエリ文字列を書き換えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。