У меня есть строка ввода, которая должна быть удалена из HTML-кодов, поэтому я использую стандартную функцию .Net .HtmlEncode () для экранирования всех опасных символов.
Теперь я пытаюсь заменить URL-адреса во входной строке на якоря HREF с помощью регулярного выражения.
Проблема заключается в том, что когда я «связываю» URL-адреса перед вызовом .HtmlEncode ()теги привязки теряются, что логично.Но когда я делаю ссылку AFTER, вызывающую .HtmlEncode (), некоторые 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>
Решение, которое я сейчас использую, заключается в вызове .HtmlDecode () для всех совпадений, найденных с помощью регулярного выражения (linkify), но это не на 100% надежно, поскольку действительный URL может теоретически содержать шаблон, такой как &
, который будет декодирован, но не должен.