Удаление атрибутов из тегов HTML с помощью PHP

Как удалить атрибуты таблицы, такие как height, border-spacing and style="";

<table style="border-collapse: collapse" border="0" bordercolor="#000000" cellpadding="3" cellspacing="0" height="80" width="95%">

к этому -->

<table>

strip_tags работает для отрывания тегов, а как насчет preg_replace?

К вашему сведению: загрузка вещей из базы данных и все эти странные стили, и я хочу избавиться от них.


person user3660449    schedule 23.05.2014    source источник
comment
DOM не регулярное выражение.   -  person Fluffeh    schedule 23.05.2014
comment
Было бы полезно, если бы ваши примеры не путали свойства CSS с атрибутами HTML и действительно соответствовали примеру кода, о котором вы говорили.   -  person Quentin    schedule 23.05.2014
comment
Дубликат: stackoverflow. ком/вопросы/3577641/   -  person Quentin    schedule 23.05.2014
comment
Много вариантов, как regex, так и dom: stackoverflow.com/questions/3026096/   -  person Steve    schedule 23.05.2014


Ответы (1)


Если вы действительно хотите использовать preg_replace, это правильный путь, но имейте в виду, что preg_replace ненадежен.

$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $html);

Я рекомендую вам использовать php DOM, который существует для такого рода операций:

// load HTML into a new DOMDocument
$dom = new DOMDocument;
$dom->loadHTML($html);

// Find style attribute with Xpath
$xpath = new DOMXPath($dom);
$styleNodes = $xpath->query('//*[@style]');

// Iterate over nodes and remove style attributes
foreach ($styleNodes as $styleNode) {
  $styleNode->removeAttribute('style');
}

// Save the clean HTML into $output
$output = $dom->saveHTML();
person Creaforge    schedule 23.05.2014