如何让Tidy去除内联样式

时间:2014-10-23 23:29:25

标签: php htmltidy

我正在尝试使用Tidy清理并从旧系统中传输一些内容。

系统有很多内联样式覆盖,我想完全删除它(我不想将它们转换为类,只需删除它们)。

我正在使用以下配置:

$config = array(
    'indent'         => true,
    'output-xhtml'   => true,
    'drop-font-tags' => true,
    'clean' => true,
    'merge-spans'=> true,
    'drop-proprietary-attributes'=> true,
);

然后像这样运行:

$test = '<p><span style="font-size: 10px;">Some content goes here.</span></p>';

$tidy = new tidy;
$tidy->parseString($test, $config, 'utf8');
$body = $tidy->body();
var_dump($body->value);

但输出仍然是:

<body>
  <p>
    <span style="font-size: 10px;">Some content goes here.</span>
  </p>
</body>

如何让Tidy删除style="font-size: 10px;"部分,或完全删除span标记。

我在documentation中看不到任何可以做到这一点的其他内容。

1 个答案:

答案 0 :(得分:1)

您可以自己删除样式属性:

$test = '<p><span style="font-size: 10px;">Some content goes here.</span></p>';
$dom = new DOMDocument;                 
$dom->loadHTML($test);                  
$xpath = new DOMXPath($dom);           
$nodes = $xpath->query('//*[@style]');  // Find elements with a style attribute
foreach ($nodes as $node) {              
    $node->removeAttribute('style');    // Remove style attribute
}
$test = $dom->saveHTML();
$tidy = new tidy;
$tidy->parseString($test, $config, 'utf8');
$body = $tidy->body();
var_dump($body->value);