我試圖去除嵌入HTML文件如何刪除HTML註釋在PHP
$data= file_get_contents($stream); <br>
$data = preg_replace('<!--*-->', '', $data); <br>
echo $data;
我仍然與所有的評論<結束了任何意見! - 唧唧歪歪 - >
什麼我做錯了嗎?
我試圖去除嵌入HTML文件如何刪除HTML註釋在PHP
$data= file_get_contents($stream); <br>
$data = preg_replace('<!--*-->', '', $data); <br>
echo $data;
我仍然與所有的評論<結束了任何意見! - 唧唧歪歪 - >
什麼我做錯了嗎?
正則表達式很難牽扯到你想要做的事情。
要匹配正則表達式中的任意文本,您需要.*
,而不僅僅是*
。您的表情正在尋找<!-
,之後是零個或多個-
個字符,然後是-->
。
我的目標html有多行評論..一行評論工作正常...我如何修復多行註釋? –
你實際上需要'。*?'來儘可能少的匹配,否則你會從第一個'<! - '到最後一個' - >'這個不是你想要的東西。 –
s/<!--[^>]*?-->//g
交換機最多的正則表達式
你實際上需要'[^>] *?'儘可能少地匹配,否則你會從第一個'<! - '到最後一個' - >'這個不是你想要的東西。 –
下面的正則表達式會刪除HTML註釋,但將保留條件註釋。
<!--(?!<!)[^\[>].*?-->
'strip_tags'去除所有標籤,而不僅僅是註釋。 –
@NedBatchelder,感謝您的建議,我快速讀了這個問題,並沒有關注這個問題。我做了一個編輯。 –
'strip_tags'總是去掉評論,但你可以指定去掉WHAT標籤。指定不在HTML中的東西,並且僅剝下注釋。 – ghoti
你應該做的是這樣的:
$str = "<html><!-- this is a commment -->OK</html>";
$str2 = preg_replace('/<!--.*-->/s', '', $str);
var_dump($str2);
我是用文件解析一個頁面獲取內容......用這段代碼我仍然以最後所有的評論 –
反斜槓太多,沒有足夠的懶惰的明星。 – ghoti
編輯(刪除反斜槓),我試過(在我的情況下)它的作品。 –
你可以做到這一點,而無需使用正則表達式:
function strip_comments($html)
{
$html = str_replace(array("\r\n<!--", "\n<!--"), "<!--", $html);
while(($pos = strpos($html, "<!--")) !== false)
{
if(($_pos = strpos($html, "-->", $pos)) === false)
$html = substr($html, 0, $pos);
else
$html = substr($html, 0, $pos) . substr($html, $_pos+3);
}
return $html;
}
在右側看到這些鏈接>> [正則表達式的 – 2012-07-05 02:56:15
可能重複,以去除HTML評論](http://stackoverflow.com/questions/1084741/regexp-to-strip-html-comments) – xdazz