下PHP正則表達式中刪除所有的空標籤:刪除所有的空標籤,除了指定
#<[^\/>]*>([\s]?)*<\/[^>]*>#u
我想刪除不匹配的空標籤:
<div style="clear:both"></div>
我想:
#^(<div style="clear:both"></div>)<[^\/>]*>([\s]?)*<\/[^>]*>#u
...但它沒有工作。
如何添加否定?
下PHP正則表達式中刪除所有的空標籤:刪除所有的空標籤,除了指定
#<[^\/>]*>([\s]?)*<\/[^>]*>#u
我想刪除不匹配的空標籤:
<div style="clear:both"></div>
我想:
#^(<div style="clear:both"></div>)<[^\/>]*>([\s]?)*<\/[^>]*>#u
...但它沒有工作。
如何添加否定?
假設它是格式良好的和沒有缺少結束標記,這應該做的伎倆:
<(?!div\s+style=(?:"[^"]*?\bclear:\s*both\b[^"]*"|'[^']*?\bclear:\s*both\b[^']*')\s*>\s*</div>).*?>\s*</.*?>
確保使用不區分大小寫的標誌了。不過,我仍然會提出反對意見。
編輯:我沒有測試過我的編輯,但我相當有信心,它有點徹底。
一個不會簡單地用正則表達式解析/處理HTML。 – PeeHaa
你混淆了'^'。這意味着主題或線條的開始。你需要一個斷言'(?!...)'而不是。 – mario
HTML不是一種常規語言。在某些情況下,結束標記*被允許*丟失*。換句話說,即使HTML文檔缺少特定的結束標籤,它也可以被認爲是良好的。這使得搜索空標籤變得更加困難。 –