通过选择标记名称在PHP中创建属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过选择标记名称在PHP中创建属性相关的知识,希望对你有一定的参考价值。
我想在显示它之前加载html,找到一个标签并添加一个属性。
我试过了:
libxml_use_internal_errors(true);
$domDocument->loadHTML("<html><body>Test<br></body></html>");
$domElement = $domDocument->getElementsByTagName('body');
foreach ($domElement as $formula) {
$formula->nodeValue->createAttribute('name')->value = 'attributevalue';
}
libxml_use_internal_errors(false);
但我有这个错误:
在字符串上调用成员函数createAttribute()
你有解决方案吗?
最好的祝福
答案
nodeValue返回String类型,这不是创建属性的方法。
事实上,节点的类型是DOMElement,因此您需要将该属性设置为与以下代码类似:
<?php
$domDocument = new DOMDocument();
$domDocument->loadHTML("<html><body>Test<br></body></html>");
$domElement = $domDocument->getElementsByTagName('body');
foreach ($domElement as $formula) {
$formula->setAttribute("name", "attributevalue");
}
?>
另一答案
这是一个可能的解决方案,其中使用setAttribute而不是创建。虽然我不确定循环的目的,因为通常只有1个body标签。
libxml_use_internal_errors(true);
$domDocument->loadHTML("<html><body>Test<br></body></html>");
$domElement = $domDocument->getElementsByTagName('body');
foreach ($domElement as $formula) {
$formula->setAttribute('name', 'thevalue');
}
libxml_use_internal_errors(false);
另一答案
试试吧
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML("<html><body>Test<br></body></html>");
$domElements = $doc->getElementsByTagName('body');
foreach ($domElements as $domElement) {
$domAttribute = $doc->createAttribute('name');
$domAttribute->value = 'attributevalue';
$domElement->appendChild($domAttribute);
print_r($domElement->getAttribute('name'));
// returns attributevalue
}
libxml_use_internal_errors(false);
尝试一下@PHP-Sandbox
以上是关于通过选择标记名称在PHP中创建属性的主要内容,如果未能解决你的问题,请参考以下文章