現在、PHPと正規表現を使用してページからすべてのHTMLコメントを取り除いています。スクリプトはうまくいく...少しうまくいく。それは、私の条件付きコメントを含むすべてのコメントを削除します。ここで私が持っているものです:PHPでHTMLコメントを削除するが条件を残す
<?php
function callback($buffer)
{
return preg_replace('/<!--(.|\s)*?-->/', '', $buffer);
}
ob_start("callback");
?>
... HTML source goes here ...
<?php ob_end_flush(); ?>
私の正規表現ではない私のような条件付きコメントは除外するようにパターンを修正する方法を把握しようとしてトラブルを抱えている熱すぎるので:
<!--[if !IE]><!-->
<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen" />
<!-- <![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" href="/css/ie7.css" type="text/css" media="screen" />
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" href="/css/ie6.css" type="text/css" media="screen" />
<![endif]-->
をこのような
こんにちはTomalak、あなたの入力と詳細な説明に感謝します。正規表現をはるかに簡単にする:)。しかし、私はあなたのソリューションを試したところ、空白のページを除いて何も表示しません。 return preg_replace( '<! - (?!\ s *(?:[if [^ \]] +] | ))(?:(?! - >) 。)* - > '、' '、$ buffer);これは正しいです? – Ian
いいえ、そうではありません。あなたはpreg_replace上のドキュメントを読むべきです。 :-) – Tomalak
私はpreg_replaceに出くわしていないことを認めなければなりません。だから私はチャンスを取るとすぐにドキュメントを読むことを決めます。しかし、この特定の問題の目的のために、それを実装する方法について少し詳しく説明することは可能でしょうか?正規表現よりも広範囲に見えますが、私が試してみたい面白いアプローチのように思えます。 – Ian