2010-09-30 79 views
0

我有HTML形式的字符串,並且在瀏覽器中顯示它之前,我想將頁面上的所有相關URL都更改爲絕對URL。我怎樣才能做到最好的方式?我正在考慮將Regex作爲獲取錨點標籤的href屬性的選項,並將基礎網址附加到它,但不知道如何去做?有人可以幫助或提出更好的解決方案嗎?正則表達式來替換HTML錨定標記中的href值

PS:我想排除鏈接中只有「#」符號的所有鏈接。例如:我想用<a href="http://mysite/dir/file1.htm" />代替<a href="/dir/file1.htm" />,但我想排除<a href="#A1" />

我希望對此有所幫助。

+1

[朋友不讓朋友用正則表達式解析HTML。](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Ether 2010-09-30 17:04:53

回答

3

一般來說,使用RegEx解析HTML是一個壞主意 - 請參閱here爲什麼。

您可以使用HTML解析器像HTML Agility Pack爲了從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); 
} 

然後,您可以排除與#開始的網址。

+0

謝謝爲答案。我聽說過這個,但不知道它會加載流,直到我下載它。我以爲我會嘗試使用正則表達式,但現在放棄了這個想法,因爲這很容易實現。 – MNIK 2010-09-30 17:16:07

相關問題