使用這個表達式表達幾乎所有的HTML註釋:刪除使用正則表達式
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)
你爲什麼不使用'strip_tags'?並添加特殊的條件註釋? – 2015-02-11 19:55:44
**不要使用正則表達式來解析HTML。使用合適的HTML解析模塊**您無法可靠地使用正則表達式解析HTML,並且您將面臨悲傷和挫折。只要HTML從你的期望改變,你的代碼就會被破壞。請參閱http://htmlparsing.com/php或[this SO thread](http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php)如何使用已經編寫,測試和調試的PHP模塊正確解析HTML的示例。 – 2015-02-11 19:56:37