Goetas\Twital\Helper\DOMHelper::checkNamespaces PHP Метод

checkNamespaces() публичный статический Метод

public static checkNamespaces ( DOMElement $element, array $namespaces = [] )
$element DOMElement
$namespaces array
    public static function checkNamespaces(\DOMElement $element, array $namespaces = array())
    {
        if ($element->namespaceURI === null && preg_match('/^([a-z0-9\\-]+):(.+)$/i', $element->nodeName, $mch) && isset($namespaces[$mch[1]])) {
            $oldElement = $element;
            $element = self::copyElementInNs($oldElement, $namespaces[$mch[1]]);
        }
        // fix attrs
        foreach (iterator_to_array($element->attributes) as $attr) {
            if ($attr->namespaceURI === null && preg_match('/^([a-z0-9\\-]+):/i', $attr->name, $mch) && isset($namespaces[$mch[1]])) {
                $element->removeAttributeNode($attr);
                $element->setAttributeNS($namespaces[$mch[1]], $attr->name, $attr->value);
            }
        }
        foreach (iterator_to_array($element->childNodes) as $child) {
            if ($child instanceof \DOMElement) {
                self::checkNamespaces($child, $namespaces);
            }
        }
    }

Usage Example

Пример #1
0
 public function addCustomNamespace(TemplateEvent $event)
 {
     foreach (iterator_to_array($event->getTemplate()->getDocument()->childNodes) as $child) {
         if ($child instanceof \DOMElement) {
             DOMHelper::checkNamespaces($child, $this->customNamespaces);
         }
     }
 }