[英]Remove almost all HTML comments using Regex
使用此正則表達式:
preg_replace( '/<!--(?!<!)[^\[>].*?-->/', '', $output )
我可以從頁面中刪除所有HTML注釋,除了以下內容:
<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]-->
我如何修改它以排除包含唯一短語(例如“ batcache”)的HTML注釋?
因此,一個HTML注釋如下:
<!--
generated 37 seconds ago
generated in 0.978 seconds
served from batcache in 0.004 seconds
expires in 263 seconds
-->
不會被刪除。
這段代碼似乎可以解決問題:
preg_replace( '/<!--([\s\S]*?)-->/', function( $c ) { return ( strpos( $c[1], '<![' ) !== false || strpos( $c[1], 'batcache' ) !== false ) ? $c[0] : ''; }, $output )
這應該替換不包含“ batcache”的注釋。 匹配在以下兩個標簽之間完成: <!--
至-->
。
$result = preg_replace("/<!--((?!batcache)(?!\\[endif\\])[\\s\\S])*?-->/", "", $str);
您可以在這里進行測試。
正如其他用戶已經說過的那樣,用正則表達式解析HTML並不總是安全的,但是如果您對要解析的HTML類型有相對的保證,那么它應該可以正常工作。 如果正則表達式與某些特定用例不匹配,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.