我有一个字符串形式的HTML,在我在浏览器中显示它之前,我想将页面上的所有相对URL更改为绝对URL。我怎么能以最好的方式做到这一点?我正在考虑使用Regex作为获取锚标签的href属性并将基本URL附加到它的选项,但不知道如何做到这一点?有人可以帮助或建议更好的解决方案吗?
PS:我想排除链接中只有“#”符号的所有链接。例如:我想将<a href="/dir/file1.htm" />
替换为<a href="http://mysite/dir/file1.htm" />
,但我想排除<a href="#A1" />
我将不胜感激。
答案 0 :(得分:3)
通常,使用RegEx解析HTML是一个坏主意 - 请参阅here了解原因。
您可以使用HTML Agility Pack之类的HTML解析器来从HTML中提取网址:
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);
}
然后,您可以排除任何以#
开头的网址。