Ich habe HTML, das durch Leerzeichen in Tags durcheinander gebracht wurde, und möchte es wieder gültig machen – zum Beispiel:
1 > Bananen< / div >
sollte in gültiges HTML konvertiert werden und soll beim Rendern Folgendes erzeugen:
1 > 0 ist true >>> Bananen
Jeder Text, dem in >
oder < Leerzeichen vorangehen/folgen, sollte unverändert bleiben – zum Beispiel ;1 > 0
sollte beibehalten werden, anstatt auf 1>0
Mir ist klar, dass hierfür möglicherweise mehrere reguläre Ausdrücke erforderlich sind, was in Ordnung ist.
Ich habe ein paar Dinge:
Dadurch wird b> div >
teilweise korrigiert ;/b>
Zum Beispiel könnte ich einen drastischen Ansatz wählen, aber das würde auch den Code innerhalb des Textteils des Etiketts zerstören, nicht den Etikettennamen selbst
没有合理的方法来保存像您发布的内容一样损坏的文档,但假设您将文本中的
>
和类似字符替换为其相关实体,例如:> ;
,您可以将要接受的文档放入适当的库中,例如DomDocument将处理剩下的事情。输出:
这个正则表达式也有效:
它将 HTML 标记中的有效部分分为四个部分,并用其替换其余部分(空格)。
Regex101 演示
/(]*\S)\s*(>)/g
( - 捕获起始尖括号(第 1 节)
\s*
- 匹配任何空格(\/?)
- 捕获可选的反斜杠(第 2 部分)\s*
- 匹配反斜杠后的任何空格([^]*\S)
- 捕获标签内的内容,不带尾随空格(第 3 节)\s*
- 匹配内容后面和右尖括号之前的空格(>)
- 捕获右尖括号(第 4 节)