2014-10-23 2 views
1

Я пытаюсь использовать Tidy для очистки и переноса некоторого контента из старой системы.Как вы получаете 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

Вы можете просто удалить стиль приписывать себя:

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

Nice Дэйва, мне это нравится. – Ben

+1

Похоже на большой недостающий элемент для аккуратности, если он не может удалить ненужные атрибуты, хотя, на боковой ноте. – Ben

Смежные вопросы