我最近发现了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;');
但是,此代码的结果是覆盖了$name
和name.'_error'
中定义的样式。
要解决这个问题,我正在寻找一个类似editAttribute的PHPdom方法,它允许编辑属性而不会覆盖该元素的现有样式属性。
有谁知道如何解决这个问题?
答案 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);