簡體   English   中英

從HTML字符串中刪除所有鏈接-正則表達式?

[英]Strip all Links From HTML String - Regex?

我有一個字符串,基本上是一個具有正常格式的內容塊(p標簽,粗體等..),有時包含編輯器放入的HTML鏈接。

但我想保留所有其他HTML,但只是刪除鏈接。 但不確定最快和最有效的方法,因為字符串可能很大(因為它們是文章)

任何代碼示例非常感謝:)

不是很准確,但懶惰 apprach將替換"<a ""<span ""</a>""</span>" 准確的結果是將其解析為DOM:

string html;
using (var client = new WebClient()) {
    html = client.DownloadString("http://stackoverflow.com");
}
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
HtmlNode node;
// loop this way to avoid issues with nesting, mutating the set, etc
while((node = doc.DocumentNode.SelectSingleNode("//a")) != null) {
    var span = doc.CreateElement("span");
    span.InnerHtml = node.InnerHtml;
    node.ParentNode.InsertAfter(span, node);
    node.Remove();
}
string final = doc.DocumentNode.OuterHtml;

但是請注意,刪除鏈接標記可能會更改樣式 ,例如,如果存在a.someClass { ... }a someNested {...}形式的css樣式

關於上述代碼的注意事項; 你也可以嘗試更直接:

foreach(var node in doc.DocumentNode.SelectNodes("//a")) {
    var span = doc.CreateElement("span");
    span.InnerHtml = node.InnerHtml;
    node.ParentNode.InsertAfter(span, node);
    node.Remove();
}

但是我不確定這是否會導致某些嵌套結構的突變/迭代問題...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM