PHPDOM:如何在HTML元素

时间:2015-07-28 03:59:09

标签: php html dom

我最近发现了PHPDom,发现它对操作HTML代码非常有用。不幸的是,在线文档是有限的,并没有我所知的全面的PHPDom手册。 (stockoverflow中没有PHPdom标记!!)

这是我遇到的问题。

我想更改html标签的样式,这就是我正在使用的内容:

            $item = $dom->getElementById($name);
            $item->setAttribute('style', 'background-color:#FF0000;');
            $item = $dom->getElementById($name.'_error');
            $item->setAttribute('style', 'display:true;'); 

但是,此代码的结果是覆盖了$namename.'_error'中定义的样式。

要解决这个问题,我正在寻找一个类似editAttribute的PHPdom方法,它允许编辑属性而不会覆盖该元素的现有样式属性。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这意味着您需要解析和编辑属性中的CSS属性。

实际上,我在FluentDOM中实现了这一点。你可以这样做:

$fd = FluentDOM($html, 'text/html');
$fd
  ->find('//a')
  ->css['text-decoration'] = 'none';
echo (string)$fd;

此逻辑位于FluentDOM\Query\Css\Properties。您可以使用此对象编辑样式属性字符串。

$style = new FluentDOM\Query\Css\Properties($node->getAttribute('style'));
$style['background-color'] = '#FF0000';
$node->setAttribute('style', $style);