すべての body セレクターと html セレクターをカスタム クラスに置き換えようとしています。(後で、html コンテンツはカスタム コンテナーに表示され、利用可能な css はメイン サイトに影響を与えません。)
これが私が試したことです:
$data = "html body { color: red; }\nbody html { color: red; }\nhtml, body { color: red; }\nbody, html, .body table, #html-TemplateContainer {\nbackground-color:#eee;\n}";
echo "<pre>".preg_replace('/(^|[,}\s]+)(body html|html body|html|body)([,.{\s]*)/is', '$1'.'.foo'.'$3', $data)."</pre>";
どちらが印刷されますか:
.foo { color: red; }
.foo { color: red; }
.foo, body { color: red; }
.foo, html, .body table, #html-TemplateContainer {
background-color:#eee;
}
3 行目と 4 行目で本文と html (scnd セレクター) が置き換えられない理由がわかりません。私の理解では、正規表現と一致するはずです。