2017-09-30 43 views
0

我正在使用以下函数来用Div ID替换HTML5元素。PHP DOM函数从HTML5创建Div ID元素

<?php function nonHTML5 ($content){ 
     $dom = new DOMDocument; 
     // Hide HTML5 element errors 
     libxml_use_internal_errors(true); 
     $dom->loadHTML($content); 
     libxml_clear_errors(); 
     $xp = new DOMXPath($dom); 
     // Bring elements into array 
     $elements = $xp->query('//*[self::header| self::footer ] 
     [not(ancestor::pre) and not(ancestor::code)]'); 
     // Loop through 
     foreach($elements as $element){ 
      // Replace with 'div' tag 
      $newElement = $dom->createElement('div'); 

      while($element->childNodes->length){ 
       // Keepup with the child nodes 
       $childElement = $element->childNodes->item(0); 
       $newElement->appendChild($dom->importNode($childElement, true)); 
      } 
      while($element->attributes->length){ 
       // Mailtain the length 
       $attributeNode = $element->attributes->item(0); 
       $newElement->setAttributeNode($dom->importNode($attributeNode)); 
      } 
      $element->parentNode->replaceChild($newElement, $element); 
     } 
    $content = $dom->saveXML($dom->documentElement); 
    return $content; 
} ?> 

我知道我们可以用HTMLShiv,但我想这样做主要是为旧的浏览器禁用JavaScript。

我的挑战:

我不能添加一个id =”“来了。例如.....

<header> 
<h1>I am the header</h1> 
</header> 

应该成为

<div id ="header"> 
<h1>I am the header</h1> 
</div> 

我试图做......

$newElement = $dom->createElement('div id ="' . $element . '"'); 

,但没有奏效。

我的问题

什么应该是正确的代码?

请注意:我不是PHP专家,因此请在您的回答/评论中做一点描述。

+0

这里是做正确的方式:http://php.net/ manual/en/domdocument.createattribute.php –

+0

让我写一个正确的答案,如果你仍然不能做到这一点? –

回答

0

这里是你如何能做到这:

注:我添加评论更多的澄清,什么是代码的正是每个语句发生。

创建带有属性的HTML元素中使用DOM:

<?php 

// Initiate a new DOMDocument 
$dom = new DOMDocument(); 

// Create an element 
$div = $dom->createElement("div","HERE DIV CONTENTS"); 

// Create an attribute i.e id 
$divAttr = $dom->createAttribute('id'); 

// Assign value to your attribute i.e id="value" 
$divAttr->value = 'This is an id'; 

// Add your attribute (id) to your element (div) 
$div->appendChild($divAttr); 

// Add your element (div) to DOM 
$dom->appendChild($div); 

// Print your DOM HERE 
echo $dom->saveHTML(); 

?> 

码输出:

<div id="This is an id">HERE DIV CONTENTS</div> 
+0

如果这解决了你的问题,所以请继续并接受这个答案,以便问题被认为是解决! –