c# Regex解析HTML字符串和添加id到每个头标签

本文关键字:标签 id 添加 解析 Regex HTML 字符串 | 更新日期: 2023-09-27 17:54:20

我有一个CMS系统,我需要在HTML字符串被提供给客户端之前对它们进行一些自动格式化。数据库中可能有这样的HTML字符串:

> "<h2>Example Header</h2><p>Here is some text about that
> header.</p><h2>Another Header 2</h2></p>Well I got more information
> here.</p>"

我想添加一个ID属性到每个H2标签,其中包含H2标签内的文本与空格删除,这将用于锚链接。所以上面的例子将会变成:

> "<h2 id="ExampleHeader">Example Header</h2><p>Here is some text about that
> header.</p><h2 id="AnotherHeader2">Another Header 2</h2></p>Well I got more 
> information here.</p>"

对于字符串中的每个H2,从

开始
<h2>Header Example Text Right Here</h2>

:

<h2 id="HeaderExampleTextRightHere">Header Example Text Right Here</h2>

删除空格,但其他内容完全相同。我如何用正则表达式做到这一点?

c# Regex解析HTML字符串和添加id到每个头标签

c#中是否有可用的HTML处理库?那就这样吧。Regex可以方便地处理示例html。但在复杂的情况下,它并不安全。

下面是示例输入的正则表达式/替换。请记住,仅针对示例输入:

htmls = Regex.Replace(htmls, @"<h2>([^<]*)</h2>", "<h2 id='"$1'">$1</h2>");

你可以这样做:

Regex.Replace("<h2>XYZ</h2>", "<h2>(?<innerText>[^<]*)</h2>", x => string.Format("<h2 id='"{0}'">{0}</h2>", x.Groups["innerText"]))