我見過這個問題在stackoverflow上問了幾次,沒有令人震驚的精彩答案。 答案似乎總是「不要使用正則表達式」,沒有任何示例的一個更好的選擇。刪除標籤和內容之間使用REGEX/PHP
爲了我的目的,這不會做驗證,但事後剝離。
我需要刪除所有script
標籤,包括可能位於它們之間的任何內容。
有關最佳REGEX方法的任何建議嗎?
編輯:預防性響應:我不能使用HTML Purifier,也不能使用PHP的DOMXPath功能。
我見過這個問題在stackoverflow上問了幾次,沒有令人震驚的精彩答案。 答案似乎總是「不要使用正則表達式」,沒有任何示例的一個更好的選擇。刪除標籤和內容之間使用REGEX/PHP
爲了我的目的,這不會做驗證,但事後剝離。
我需要刪除所有script
標籤,包括可能位於它們之間的任何內容。
有關最佳REGEX方法的任何建議嗎?
編輯:預防性響應:我不能使用HTML Purifier,也不能使用PHP的DOMXPath功能。
HTML的REGEX被認爲是邪惡的原因是因爲它可以(通常)很容易被破壞,迫使你不斷重新思考你的模式。例如如果你匹配
<script>.+</script>
它可以很容易地
<script type="text/javascript">
如果使用被打破
<script.+/script>
它也可以很容易地與
< script>...
破
這是沒有盡頭的。如果你不能使用你所說的任何方法,你可以嘗試strip_tags
,但它需要白名單作爲參數,而不是黑名單,這意味着你需要手動允許每一個你想要允許的標籤。
如果一切都失敗了,你可以求助於正則表達式,我想出了這是
<\s*script.*/script>
但我敢打賭,有人在這裏也許可以來打破這一點。
謝謝!就像我上面所說的那樣,這不是關於驗證,而是刪除已經存在的代碼。 – kylex 2012-03-28 17:44:35
也許相關http://stackoverflow.com/questions/2505957/using-regex-to-remove-script-tags – 2012-03-27 20:34:58
考慮閱讀這非常受歡迎的線程http://stackoverflow.com/questions/1732348/regex-match -open-tags-except-xhtml-self-contained-tags – Tchoupi 2012-03-27 20:57:39