![](/img/trans.png)
[英]How to set new HTML tag in custom class that extends DOMElement (using DOMDocument in php)?
[英]Using DomElement to set [class] attribute for AMP html
无论如何, ->setAttribute
周围是否不允许我设置名为[class]
的属性? 我有以下代码:
$success = $doc->createElement('span', 'You have been successfully subscribed');
$success->setAttribute('class', 'hide');
$success->setAttribute('[class]', 'ampState.success'); // error here
$form->appendChild($success);
但是当尝试运行此程序时,我得到了
PHP Fatal error: Uncaught DOMException: Invalid Character Error in <path>
我可以使用较低级别的手动方法来设置此属性吗?
我最终使用的解决方法涉及创建伪标记,可以在以下位置使用str_replace :
$success = $doc->createElement('span', 'You have been successfully subscribed');
$success->setAttribute('class', 'hide');
// [class] => pseudo-class
$success->setAttribute('pseudo-class', 'ampState.success');
$form->appendChild($success);
然后在最后,我创建生成所有HTML并在该伪类上执行str-replace以将其更改回:
// get all HTML inside <body></body>
$body = $doc->getElementsByTagName('body')->item(0);
foreach($body->childNodes as $childNode)
{
$innerHTML .= $childNode->ownerDocument->saveHTML($childNode);
}
// replace pseudo-class with [class]
$innerHTML = str_replace('pseudo-class', '[class]', $innerHTML);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.