Remova todas as tags HTML vazias?
stou imaginando uma função que eu acho que usaria Regex e seria recursiva para instâncias como<p><strong></strong></p>
para remover todas as tags HTML vazias dentro de uma string. Isso teria que levar em conta espaço em branco, se possível. Não haveria instâncias malucas em que <caractere estivesse sendo usado em um valor de atributo.
Sou péssimo em regex, mas imagino que isso seja possível. Como você pode fazer isso
qui está o método que eu tenho até agor
Public Shared Function stripEmptyHtmlTags(ByVal html As String) As String
Dim newHtml As String = Regex.Replace(html, "/(<.+?>\s*</.+?>)/Usi", "")
If html <> newHtml Then
newHtml = stripEmptyHtmlTags(newHtml)
End If
Return newHtml
End Function
No entanto, meu Regex atual está no formato PHP e parece não estar funcionando. Não estou familiarizado com a sintaxe regex do .NET.
Para todos aqueles que dizem não usar regex: Estou curioso para saber qual seria o padrão. Certamente, existe um padrão que pode corresponder a todas as tags iniciais de abertura / fechamento com qualquer quantidade de espaço em branco (ou nenhum) entre as tags? Eu vi regex que corresponde a tags HTML com qualquer número de atributos, uma tag vazia (como apenas<p></p>
) etc.
té agora, tentei os seguintes padrões de regex no método acima sem sucesso (como em, eu tenho uma string de texto com tags de parágrafos vazios que nem foram removidas
Regex.Replace(html, "/(<.+?>\s*</.+?>)/Usi", "")
Regex.Replace(html, "(<.+?>\s*</.+?>)", "")
Regex.Replace(html, "%<(\w+)\b[^>]*>\s*</\1\s*>%", "")
Regex.Replace(html, "<\w+\s*>\s*</\1\s*>", "")