【问题标题】:Regex to replace href values in anchor tags of HTML正则表达式替换 HTML 锚标记中的 href 值
【发布时间】:2011-04-19 11:29:00
【问题描述】:

我有字符串形式的 HTML,在浏览器中显示它之前,我想将页面上的所有相对 url 更改为绝对 url。我怎样才能做到最好?我正在考虑将正则表达式作为获取锚标记的 href 属性并将基本 url 附加到它的选项,但不知道该怎么做?有人可以提供帮助或建议更好的解决方案吗?

PS:我想排除链接中只有“#”符号的所有链接。例如:我想将<a href="/dir/file1.htm" />替换为<a href="http://mysite/dir/file1.htm" />,但我想排除<a href="#A1" />

我将不胜感激。

【问题讨论】:

标签: c# html regex url


【解决方案1】:

一般来说,使用 RegEx 解析 HTML 是个坏主意 - 请参阅 here 了解原因。

您可以使用像HTML Agility Pack 这样的 HTML 解析器来从 HTML 中提取 URL:

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
   HtmlAttribute att = link["href"];
   att.Value = FixLink(att);
}

然后您可以排除任何以# 开头的网址。

【讨论】:

  • 感谢您的回答。我听说过这个,但直到我下载它才知道它也会加载流。我想我会尝试使用正则表达式,但现在放弃了这个想法,因为这很容易实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 2011-09-21
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多