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专家,因此请在您的回答/评论中做一点描述。
这里是做正确的方式:http://php.net/ manual/en/domdocument.createattribute.php –
让我写一个正确的答案,如果你仍然不能做到这一点? –