HTMLコードから削除する必要のある入力文字列があるため、デフォルトの.Net関数.HtmlEncode()を使用して、すべての危険な文字をエスケープします。
ここで、入力文字列のURLを、正規表現を介してHREFアンカーに置き換えようとしています。
問題は、.HtmlEncode()を呼び出す前にURLを「リンク」すると、アンカータグが失われることです。これは論理的です。しかし、.HtmlEncode()を呼び出した後にlinkifyを実行すると、危険な文字が含まれているために一部のURLが不正な形式になりますか?
鶏が先か卵が先かという問題のようですが、どうすれば解決できますか?
例:
入力文字列:
See http://example.com/q=1&x=2
期待される結果:
See <a href="http://example.com/q=1&x=2">http://example.com/q=1&x=2</a>
最初にHtmlEncodeを実行し、その後でLinkifyを呼び出します。
See <a href="http://example.com/q=1&x=2">http://example.com/q=1&x=2</a>
最初にLinkifyを実行し、その後にHtmlEncodeを呼び出します。
See <a href="http://example.com/q=1&x=2">http://example.com/q=1&x=2</a>
私が現在使用している解決策は、正規表現(linkify)で見つかったすべての一致に対して.HtmlDecode()を呼び出すことですが、有効なURLには理論的には&
デコードされるようなパターンが含まれている可能性があるため、100%確実ではありません。 。