dongtuoao7987
dongtuoao7987
2014-10-23 23:29

如何让Tidy去除内联样式

已采纳

I'm trying to use Tidy to clean up and transfer some content from an old system.

The system has a lot of inline style overrides which I want to drop completely (I don't want to convert them to classes, just drop them).

I'm using the following config:

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

And run it like this:

$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);

But the output is still:

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

How do I get Tidy to remove the style="font-size: 10px;" part as well, or drop the span tag altogether.

I can't see anything else in the documentation that would do that.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • duanjiang7505 duanjiang7505 7年前

    You could just remove the style attribute yourself:

    $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);                  
    
    点赞 评论 复制链接分享

相关推荐