Php DOM解析器:仅删除某些属性

Php DOM解析器:仅删除某些属性,php,dom,html-parsing,domdocument,Php,Dom,Html Parsing,Domdocument,如何使用DOM解析器删除span标记中的所有属性,但除了这两个属性之外 cultura接受 心接受 拒绝这个, 可以接受 可能吗 我的工作代码来自另一个我做的 $content='1!' 文化之心 也许 '; $dom=新的DOMDocument(); $dom->loadHTML($content); foreach($dom->getElementsByTagName(“span”)作为$span) { foreach($span->属性为$attrib) { $span->removeAt

如何使用DOM解析器删除span标记中的所有属性,但除了这两个属性之外

cultura
接受

接受

拒绝这个,

可以
接受

可能吗

我的工作代码来自另一个我做的

$content='1!'
文化之心
也许
';
$dom=新的DOMDocument();
$dom->loadHTML($content);
foreach($dom->getElementsByTagName(“span”)作为$span)
{
foreach($span->属性为$attrib)
{
$span->removeAttributeNode($attrib);
}
}
$content=$dom->saveHTML();

但此代码将删除
span
标记内的所有属性

您需要手动操作

DOM处理HTML属性,而不是CSS属性


您需要使用
访问style属性,
explode
它的值编码为分隔符,然后循环数组以查找要取消设置的值。

这完全可以仅使用DOM。DOM通过属性公开
style
属性的解析版本

$('*').each(function() {
    var s = this.style;
    for (var i = s.length - 1; i >= 0; i--)
       if (s[i] != 'font-weight')
           s.removeProperty(s[i]);
});
上述代码删除了除
字体重量
以外的所有样式

这使用jQuery的
$('*')
来迭代每个元素,但当然,您可以通过使用DOM来实现

下面是一个可以使用的JSFIDLE:


不幸的是,其中的一个困难是名称似乎依赖于浏览器:例如,
文本装饰
被Firefox分解成一堆
-moz-*
样式。

您不是特别清楚:您想删除除样式属性以外的所有内容吗?或者只是文字装饰风格?对不起。是的,除了文本装饰样式之外,其他都是。CSS不在DOM的权限范围内-您可以轻松删除除样式属性之外的所有属性,但您需要单独解析实际的样式定义。感谢您的解释:-)我不相信这是完全正确的;DOM通过属性公开
style
属性的解析版本。
$('*').each(function() {
    var s = this.style;
    for (var i = s.length - 1; i >= 0; i--)
       if (s[i] != 'font-weight')
           s.removeProperty(s[i]);
});