0
PHP regex/PHP DOM/PHP XPathの質問です。*いくつかのインラインCSSを削除するにはどうすればよいですか?
<p style='text-indent: 22px; font-weight: bold; line-height: 1em; color: #FFF'>
どのように私は、「行の高さ」と「色」のCSSプロパティを削除するには、手つかずのテキストインデントとフォントの太さを残して、その結果:インラインCSSと、次のHTMLを考えると
HTMLは次のとおりです。
<p style='text-indent: 22px; font-weight: bold;'>
HTMLファイルは任意のタグに適用されたタグと他の属性の様々な営巣して、潜在的に数百行である可能性があります。
$elements = $xPath->query('//*[@style="color"]');
foreach ($elements as $element) {
//remove style='color'
}
:私の現在の考え方は、これらの線に沿って何かを使用していた - 「スタイル」属性は、私はPHPのDOMや正規表現の両方を使用してのアプローチがあります知っています
<p>
以外のタグに適用することができることを
注意
感謝
EDIT
はここに私のゾルですution:
https://github.com/sabberworm/PHP-CSS-Parser
作成するには:
$dom = new DOMDocument;
@$dom->loadHTML('<?xml encoding="UTF-8">' . $html);
$xPath = new DOMXPath($dom);
$elements = $xPath->query('//p|//span');
foreach($elements as $element){
$oParser = new CSSParser("p{" . $element->getAttribute('style') . "}");
$oCss = $oParser->parse();
foreach($oCss->getAllRuleSets() as $oRuleSet) {
$oRuleSet->removeRule('line-');
$oRuleSet->removeRule('margin-');
$oRuleSet->removeRule('font-');
}
$css = $oCss->__toString();
$css = substr_replace($css, '', 0, 3);
$css = substr_replace($css, '', -1, 1);
$element->setAttribute('style', $css);
}
$src = $dom->saveHTML();
パーフェクト - 私は現在実用的な解決策を持っています – kaese