2012-02-29 9 views
3

鋸山1.5.0HTMLフラグメントにエンコードするエンティティから鋸山を防止するための方法

私は、特にHREFでアンパサンドで、クエリパラメータを持つリンクで解析されたフラグメント出力にできないんです。アンパサンドはhtmlエンティティに置き換えられます。

f = Nokogiri::HTML.fragment(%q{<a href="http://example.com?this=1&that=2">Testing</a>}) 
f.to_s # => "<a href=\"http://example.com?this=1&amp;that=2\">Testing</a>" 
f.to_html # => "<a href=\"http://example.com?this=1&amp;that=2\">Testing</a>" 

to_html(encoding: 'UTF-8')またはUS-ASCIIを使用しているヘルプがありません。

これは、有効なリンク形式を解析して、それを有効なHTMLとしてレンダリングしたいと考えているようです。

How to make Nokogiri transparently return un/encoded Html entities untouched?は助けになりませんでした。

答えて

4

NokogiriのHTMLパーサは、ソースドキュメントのエラーを自動的に修正します。 URLの裸のアンパサンドはactually an errorです。したがって、ノコギリはそれを修正しています。 f.errorsを見ると、&thatは有効なエンティティではなく、セミコロンがないと考えられるので、アンパサンドを&amp;に修正し、有効なHTMLにします。

+0

参考にしていただきありがとうございます。 – aceofspades

関連する問題