繁体   English   中英

使用DomElement设置AMP html的[class]属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM