Automattic\WooCommerce\Vendor\Pelago\Emogrifier\HtmlProcessor

HtmlPruner::removeClassesFromElementsprivateWC 1.0

Removes classes from the class attribute of each element in $elements, except any in $classesToKeep, removing the class attribute itself if the resultant list is empty.

Method of the class: HtmlPruner{}

No Hooks.

Returns

null. Nothing (null).

Usage

// private - for code of main (parent) class only
$result = $this->removeClassesFromElements( $elements, $classesToKeep ): void;
$elements(DOMNodeList) (required)
.
$classesToKeep(array) (required)
.

HtmlPruner::removeClassesFromElements() code WC 10.5.0

private function removeClassesFromElements(\DOMNodeList $elements, array $classesToKeep): void
{
    $classesToKeepIntersector = new ArrayIntersector($classesToKeep);

    $preg = new Preg();
    /** @var \DOMElement $element */
    foreach ($elements as $element) {
        $elementClasses = $preg->split('/\\s++/', \trim($element->getAttribute('class')));
        $elementClassesToKeep = $classesToKeepIntersector->intersectWith($elementClasses);
        if ($elementClassesToKeep !== []) {
            $element->setAttribute('class', \implode(' ', $elementClassesToKeep));
        } else {
            $element->removeAttribute('class');
        }
    }
}