[英]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.